From a9b02c4474d432693f602e08d00f5b400ca9946b Mon Sep 17 00:00:00 2001 From: MasterEnderman Date: Mon, 10 Aug 2026 21:26:03 +0200 Subject: [PATCH] =?UTF-8?q?we=20got=20JAVA=20=E2=98=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: MasterEnderman --- home/console/java.nix | 28 ++++++++++++++++++++++++++++ modules/java.nix | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 home/console/java.nix create mode 100644 modules/java.nix diff --git a/home/console/java.nix b/home/console/java.nix new file mode 100644 index 0000000..d9095cb --- /dev/null +++ b/home/console/java.nix @@ -0,0 +1,28 @@ +{ + config, + lib, + pkgs, + osConfig, + ... +}: { + options.modules.java = { + enable = lib.mkOption { + default = osConfig.modules.java.enable; + description = "Symlink managed Temurin JDKs into ~/.jdks for IntelliJ-family JDK discovery. Defaults to whatever the system module has set."; + type = lib.types.bool; + }; + + versions = lib.mkOption { + default = osConfig.modules.java.versions; + description = "Temurin versions to symlink, matching pkgs.temurin-bin- attribute names. Defaults to the system module's list."; + type = lib.types.listOf lib.types.str; + }; + }; + + config = lib.mkIf config.modules.java.enable { + home.file = + lib.mapAttrs' + (ver: drv: lib.nameValuePair ".jdks/temurin-${ver}" {source = drv;}) + (lib.genAttrs config.modules.java.versions (ver: pkgs.${"temurin-bin-${ver}"})); + }; +} diff --git a/modules/java.nix b/modules/java.nix new file mode 100644 index 0000000..f41059b --- /dev/null +++ b/modules/java.nix @@ -0,0 +1,43 @@ +{ + config, + lib, + pkgs, + ... +}: { + options.modules.java = { + enable = lib.mkOption { + default = true; + description = "Install managed Temurin JDKs under /etc/jdks with per-version JDK_HOME variables and JAVA_HOME pointing at the latest. Also drives the default for the Home Manager modules.java module."; + type = lib.types.bool; + }; + + versions = lib.mkOption { + default = ["8" "11" "17" "21" "25" "26"]; + description = "Temurin versions to install, matching pkgs.temurin-bin- attribute names. Also the default version list for the Home Manager modules.java module."; + type = lib.types.listOf lib.types.str; + }; + }; + + config = lib.mkIf config.modules.java.enable (let + versions = config.modules.java.versions; + jdks = lib.genAttrs versions (ver: pkgs.${"temurin-bin-${ver}"}); + latestVersion = lib.last versions; + latestJdk = jdks.${latestVersion}; + latestEtcPath = "/etc/jdks/${latestVersion}"; + jdkHomeVars = + lib.mapAttrs' + (ver: _: lib.nameValuePair "JDK${ver}_HOME" "/etc/jdks/${ver}") + jdks; + in { + environment = { + etc = + lib.mapAttrs' + (ver: drv: lib.nameValuePair "jdks/${ver}" {source = drv;}) + jdks; + systemPackages = [latestJdk]; + variables = + {JAVA_HOME = latestEtcPath;} + // jdkHomeVars; + }; + }); +} -- 2.51.2