Seemingly not reproducable behavior of idea-community package

Hi, I just updated my flake-enabled NixOS installation, and the updated idea-community package is broken on my system. Through some experimentation, I puzzingly ended up getting the new idea-community version working by running nix-shell with the same version my flake.lock specifies. From my flake.lock:

"nixpkgs": {
      "locked": {
        "lastModified": 1758690382,
        "narHash": "sha256-NY3kSorgqE5LMm1LqNwGne3ZLMF2/ILgLpFr1fS4X3o=",
        "owner": "NixOS",
        "repo": "nixpkgs",
        "rev": "e643668fd71b949c53f8626614b21ff71a07379d",
        "type": "github"
      },
      "original": {
        "owner": "NixOS",
        "ref": "nixos-unstable",
        "repo": "nixpkgs",
        "type": "github"
      }
    },

Running

nix-shell -p idea-community

gives me the broken version.

Running

nix-shell -I nixpkgs=https://github.com/NixOS/nixpkgs/archive/e643668fd71b949c53f8626614b21ff71a07379d.tar.gz -p jetbrains.idea-community

Gives me a version that works fine.

Both report as 2025.1.1.1.

Did I misunderstand the revisions in flake.lock?

The error I’m getting in idea-community is:

java.lang.NullPointerException: Cannot read field "hovered" because "state" is null
... long stacktrace ...

This happens when I try to do an action in idea-community that will open another window.

nix-shell is pointing at some completely different version. Mostly likely some old channel. If you do an ls -la $(which idea) you’ll seem them not line up. What does your builtins.nixPath evaluate to? That’s what is driving the nix-shell version.

The really easy way to tell this is the case is that if they were looking at the same version of nixpkgs you’d be doing nix-shell -p jetbrains.idea-community.

nix-repl> :p builtins.nixPath
[
  {
    path = "flake:nixpkgs";
    prefix = "nixpkgs";
  }
  {
    path = "/nix/var/nix/profiles/per-user/root/channels";
    prefix = "";
  }
  {
    path = "/nix/var/nix/profiles/per-user/root/channels";
    prefix = "";
  }
]

The very interesting part is if I add this to the flake.nix used by my system:

# inputs:
nixpkgs-intellij.url = "github:nixos/nixpkgs/e643668fd71b949c53f8626614b21ff71a07379d";

# Import
pkgs-intellij = import inputs.nixpkgs-intellij { inherit system; };

# And add to specialArgs:
inherit pkgs-intellij;

# And finally in my configuration.nix
pkgs-intellij.jetbrains.idea-community

The above results in the behavior of idea I have with nix-shell.

Expanding the snippet from my flake.lock, which now contains the intellij input:

"nixpkgs": {
      "locked": {
        "lastModified": 1758690382,
        "narHash": "sha256-NY3kSorgqE5LMm1LqNwGne3ZLMF2/ILgLpFr1fS4X3o=",
        "owner": "NixOS",
        "repo": "nixpkgs",
        "rev": "e643668fd71b949c53f8626614b21ff71a07379d",
        "type": "github"
      },
      "original": {
        "owner": "NixOS",
        "ref": "nixos-unstable",
        "repo": "nixpkgs",
        "type": "github"
      }
    },
...
"nixpkgs-intellij": {
      "locked": {
        "lastModified": 1758690382,
        "narHash": "sha256-NY3kSorgqE5LMm1LqNwGne3ZLMF2/ILgLpFr1fS4X3o=",
        "owner": "nixos",
        "repo": "nixpkgs",
        "rev": "e643668fd71b949c53f8626614b21ff71a07379d",
        "type": "github"
      },
      "original": {
        "owner": "nixos",
        "repo": "nixpkgs",
        "rev": "e643668fd71b949c53f8626614b21ff71a07379d",
        "type": "github"
      }
    },

This is how I currently fix the issue.

Are you using the Wayland backend? If so, you’ve hit this:

It says CLion, but it’s a bug in the JB runtime; I’m hitting it with Goland.

There’s no fix yet other than to remove -Dawt.toolkit.name=WLToolkit

Yep, I’m using the wayland backend, and that’s what I’m seeing. Super weird that I have it working by installing idea from a separate input though (see my above post). Any suggestions on how I can troubleshoot that?
My initial thought is that I somehow am not installing the same version of idea between the nixpkgs and nixpkgs-intellij inputs, even though the lock file points to the same version of nixpkgs.

I found something interesting. Between my two input flakes with the same nixpkgs revision, idea reports as follows (from the Help -> about dialog)

Working version:

IntelliJ IDEA 2025.1.1.1 (Community Edition)
Build #IC-251.25410.129, built on January 1, 1980
Runtime version: 21.0.7+9-nixos amd64 (JCEF 122.1.9)
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Toolkit: sun.awt.wl.WLToolkit
Linux 6.12.51
NixOS 25.11 (Xantusia); glibc: 2.4
Kotlin plugin: K2 mode
GC: G1 Young Generation, G1 Concurrent GC, G1 Old Generation
Memory: 3486M
Cores: 16
Registry:
  ide.experimental.ui=true
Non-Bundled Plugins:
  com.intellij.marketplace (251.25410.159)
  manjaro.mpb (1.9)
  com.markskelton.one-dark-theme (5.14.1)
  Key Promoter X (2024.2.2)
  izhangzhihao.rainbow.brackets.lite (1.3.0)
Kotlin: 251.25410.129-IJ
Current Desktop: Hyprland

Broken version (running X11 backend, because I can’t open the about dialog with the wayland backend):

IntelliJ IDEA 2025.1.1.1 (Community Edition)
Build #IC-251.25410.129, built on January 1, 1980
Runtime version: 21.0.8+9-nixos amd64 (JCEF 137.0.17)
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Toolkit: sun.awt.X11.XToolkit
Linux 6.12.51
NixOS 25.11 (Xantusia); glibc: 2.4
Kotlin plugin: K2 mode
GC: G1 Young Generation, G1 Concurrent GC, G1 Old Generation
Memory: 3486M
Cores: 16
Registry:
  ide.experimental.ui=true
Non-Bundled Plugins:
  com.intellij.marketplace (251.25410.159)
  manjaro.mpb (1.9)
  com.markskelton.one-dark-theme (5.14.1)
  Key Promoter X (2024.2.2)
  izhangzhihao.rainbow.brackets.lite (1.3.0)
Kotlin: 251.25410.129-IJ
Current Desktop: Hyprland

The diff is the JB runtime version.

Given the same nixpkgs version, surely that should be the same?