diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 7ae3722bc8f..fd42d335bb8 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -70,6 +70,7 @@ ./programs/fish.nix ./programs/freetds.nix ./programs/info.nix + ./programs/java.nix ./programs/kbdlight.nix ./programs/light.nix ./programs/man.nix diff --git a/nixos/modules/programs/java.nix b/nixos/modules/programs/java.nix new file mode 100644 index 00000000000..3292aa369d2 --- /dev/null +++ b/nixos/modules/programs/java.nix @@ -0,0 +1,57 @@ +# This module provides JAVA_HOME, with a different way to install java +# system-wide. + +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.programs.java; +in + +{ + + options = { + + programs.java = { + + enable = mkEnableOption "java" // { + description = '' + Install and setup the Java development kit. + + This adds JAVA_HOME to the global environment, by sourcing the + jdk's setup-hook on shell init. It is equivalent to starting a shell + through 'nix-shell -p jdk', or roughly the following system-wide + configuration: + + + environment.variables.JAVA_HOME = ''${pkgs.jdk.home}/lib/openjdk; + environment.systemPackages = [ pkgs.jdk ]; + + + ''; + }; + + package = mkOption { + default = pkgs.jdk; + description = '' + Java package to install. Typical values are pkgs.jdk or pkgs.jre. + ''; + type = types.package; + }; + + }; + + }; + + config = mkIf cfg.enable { + + environment.systemPackages = [ cfg.package ]; + + environment.shellInit = '' + test -e ${cfg.package}/nix-support/setup-hook && source ${cfg.package}/nix-support/setup-hook + ''; + + }; + +}