1# This module provides JAVA_HOME, with a different way to install java
2# system-wide.
3
4{ config, lib, pkgs, ... }:
5
6with lib;
7
8let
9 cfg = config.programs.java;
10in
11
12{
13
14 options = {
15
16 programs.java = {
17
18 enable = mkEnableOption "java" // {
19 description = ''
20 Install and setup the Java development kit.
21 <note>
22 <para>This adds JAVA_HOME to the global environment, by sourcing the
23 jdk's setup-hook on shell init. It is equivalent to starting a shell
24 through 'nix-shell -p jdk', or roughly the following system-wide
25 configuration:
26 </para>
27 <programlisting>
28 environment.variables.JAVA_HOME = ''${pkgs.jdk.home}/lib/openjdk;
29 environment.systemPackages = [ pkgs.jdk ];
30 </programlisting>
31 </note>
32 '';
33 };
34
35 package = mkOption {
36 default = pkgs.jdk;
37 defaultText = "pkgs.jdk";
38 description = ''
39 Java package to install. Typical values are pkgs.jdk or pkgs.jre.
40 '';
41 type = types.package;
42 };
43
44 };
45
46 };
47
48 config = mkIf cfg.enable {
49
50 environment.systemPackages = [ cfg.package ];
51
52 environment.shellInit = ''
53 test -e ${cfg.package}/nix-support/setup-hook && source ${cfg.package}/nix-support/setup-hook
54 '';
55
56 };
57
58}