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 (lib.mdDoc "java") // {
19 description = lib.mdDoc ''
20 Install and setup the Java development kit.
21
22 ::: {.note}
23 This adds JAVA_HOME to the global environment, by sourcing the
24 jdk's setup-hook on shell init. It is equivalent to starting a shell
25 through 'nix-shell -p jdk', or roughly the following system-wide
26 configuration:
27
28 environment.variables.JAVA_HOME = ''${pkgs.jdk.home}/lib/openjdk;
29 environment.systemPackages = [ pkgs.jdk ];
30 :::
31 '';
32 };
33
34 package = mkOption {
35 default = pkgs.jdk;
36 defaultText = literalExpression "pkgs.jdk";
37 description = lib.mdDoc ''
38 Java package to install. Typical values are pkgs.jdk or pkgs.jre.
39 '';
40 type = types.package;
41 };
42
43 };
44
45 };
46
47 config = mkIf cfg.enable {
48
49 environment.systemPackages = [ cfg.package ];
50
51 environment.shellInit = ''
52 test -e ${cfg.package}/nix-support/setup-hook && source ${cfg.package}/nix-support/setup-hook
53 '';
54
55 };
56
57}