modules: java: fix setting JAVA_HOME (#3638)

Some JVMs pass through `home` as a derivation rather than as a string, as `openjdk` does. Since the module option for session variables expects a string, this is a type error. I suspect that this incorrect, and have changed the assignment here to coerce the `cfg.package.home` attribute to a string to be safe.

After discussing with @NobbZ, we have decided it is best to mitigate this problem in HM rather than to make potentially breaking changes to Nixpkgs.

Please do mention if you think we ought to propose a change to Nixpkgs instead.
This commit is contained in:
Jacob Birkett 2023-02-05 03:02:57 -07:00 committed by GitHub
parent 2ffc6d6496
commit e716961d78
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -36,6 +36,8 @@ in {
config = mkIf cfg.enable { config = mkIf cfg.enable {
home.packages = [ cfg.package ]; home.packages = [ cfg.package ];
home.sessionVariables.JAVA_HOME = cfg.package.home; # some instances of `jdk-linux-base.nix` pass through `result` without turning it onto a path-string.
# while I suspect this is incorrect, the documentation is unclear.
home.sessionVariables.JAVA_HOME = "${cfg.package.home}";
}; };
} }