diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index d8640934..384daff1 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -84,6 +84,8 @@
/modules/programs/i3status-rust.nix @workflow
+/modules/programs/java.nix @ShamrockLee
+
/modules/programs/keychain.nix @marsam
/modules/programs/lazygit.nix @kalhauge
diff --git a/modules/misc/news.nix b/modules/misc/news.nix
index f5ac9c9e..2f5608e1 100644
--- a/modules/misc/news.nix
+++ b/modules/misc/news.nix
@@ -2047,6 +2047,13 @@ in
configuration file.
'';
}
+
+ {
+ time = "2021-10-03T20:00:52+00:00";
+ message = ''
+ A new module is available: 'programs.java'.
+ '';
+ }
];
};
}
diff --git a/modules/modules.nix b/modules/modules.nix
index e7f4c1b6..5b60643a 100644
--- a/modules/modules.nix
+++ b/modules/modules.nix
@@ -83,6 +83,7 @@ let
(loadModule ./programs/info.nix { })
(loadModule ./programs/irssi.nix { })
(loadModule ./programs/lieer.nix { })
+ (loadModule ./programs/java.nix { })
(loadModule ./programs/jq.nix { })
(loadModule ./programs/kakoune.nix { })
(loadModule ./programs/keychain.nix { })
diff --git a/modules/programs/java.nix b/modules/programs/java.nix
new file mode 100644
index 00000000..5b2a0129
--- /dev/null
+++ b/modules/programs/java.nix
@@ -0,0 +1,46 @@
+# This module provides JAVA_HOME, with a different way to install java locally.
+# This module is modified from the NixOS module `programs.java`
+
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+
+ cfg = config.programs.java;
+
+in {
+ meta.maintainers = with maintainers; [ ShamrockLee ];
+
+ options = {
+ programs.java = {
+ enable = mkEnableOption "" // {
+ description = ''
+ Install the Java development kit and set the JAVA_HOME
+ variable.
+ '';
+ };
+
+ package = mkOption {
+ type = types.package;
+ default = pkgs.jdk;
+ defaultText = "pkgs.jdk";
+ description = ''
+ Java package to install. Typical values are
+ pkgs.jdk or pkgs.jre.
+ '';
+ };
+ };
+ };
+
+ config = mkIf cfg.enable {
+ home.packages = [ cfg.package ];
+
+ home.sessionVariables = {
+ JAVA_HOME = fileContents (pkgs.runCommandLocal "java-home" { } ''
+ source "${cfg.package}/nix-support/setup-hook"
+ echo "$JAVA_HOME" > $out
+ '');
+ };
+ };
+}