Here is my flake.nix:
{
description = "Example";
inputs = {
stable.url = "github:NixOS/nixpkgs/nixos-26.05";
flake-utils.url = "github:numtide/flake-utils";
};
outputs =
{
self,
stable,
flake-utils,
}:
flake-utils.lib.eachDefaultSystem (
system:
let
pkgs = import stable { inherit system; };
in
{
devShells = {
default = pkgs.mkShell {
buildInputs = with pkgs; [
# Java
javaPackages.compiler.openjdk25
maven
# JavaFX native dependencies
libXxf86vm
libXtst
libX11
libXrender
libXext
gtk3
glib
alsa-lib
libGL
# Editors/IDEs
vscodium
zed-editor
];
LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [
pkgs.libXxf86vm
pkgs.libXtst
pkgs.libX11
pkgs.libXrender
pkgs.libXext
pkgs.gtk3
pkgs.glib
pkgs.alsa-lib
pkgs.libGL
];
JAVA_HOME = pkgs.javaPackages.compiler.openjdk25;
MAVEN_OPTS = "-Dmaven.repo.local=./.m2";
shellHook = ''
echo "Dev environment ready."
'';
};
};
}
);
}
If I hardcode the path to JAVA_HOME in my settings.json file, JDT works fine:
{
"nixEnvSelector.nixFile": "${workspaceFolder}/flake.nix",
"nixEnvSelector.useFlakes": true,
"nixEnvSelector.flakeShell": "default",
"java.jdt.ls.java.home": "/nix/store/xrhf3v9017v3irpili57j1jxnk4wc710-openjdk-25.0.4+1/lib/openjdk/",
"java.configuration.updateBuildConfiguration": "automatic"
}
However if I set it to ${env:JAVA_HOME}:
{
"java.jdt.ls.java.home": "${env:JAVA_HOME}",
}
It complains with an error:
The java.jdt.ls.java.home variable defined in VSCodium settings
points to a missing or inaccessible folder (${env:JAVA_HOME})
Any tips on why this isn’t working and how to fix it?"
#vscode #java #jdt