diff options
author | Lily Foster <lily@lily.flowers> | 2023-03-11 10:04:43 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-11 10:04:43 -0500 |
commit | 9c1d627508e4fb46d0e38b1a0fdda5f44c1c7a14 (patch) | |
tree | 05de3995a5d6e2d4a614e6f15615f4bb40edfdfd /nixos | |
parent | a0ddd1a5895e710eee2dab7a908832d0ddec8986 (diff) | |
parent | 9fdd97298b6b8b0a8385ada8b81d9d1d56ed7c34 (diff) |
Merge pull request #208414 from RossComputerGuy/feat/java-binfmt
nixos/java: add binfmt option
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/modules/programs/java.nix | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/nixos/modules/programs/java.nix b/nixos/modules/programs/java.nix index 4f03c1f3ff258..c5f83858d06a3 100644 --- a/nixos/modules/programs/java.nix +++ b/nixos/modules/programs/java.nix @@ -8,7 +8,6 @@ with lib; let cfg = config.programs.java; in - { options = { @@ -40,12 +39,35 @@ in type = types.package; }; + binfmt = mkEnableOption (lib.mdDoc "binfmt to execute java jar's and classes"); + }; }; config = mkIf cfg.enable { + boot.binfmt.registrations = mkIf cfg.binfmt { + java-class = { + recognitionType = "extension"; + magicOrExtension = "class"; + interpreter = pkgs.writeShellScript "java-class-wrapper" '' + test -e ${cfg.package}/nix-support/setup-hook && source ${cfg.package}/nix-support/setup-hook + classpath=$(dirname "$1") + class=$(basename "''${1%%.class}") + $JAVA_HOME/bin/java -classpath "$classpath" "$class" "''${@:2}" + ''; + }; + java-jar = { + recognitionType = "extension"; + magicOrExtension = "jar"; + interpreter = pkgs.writeShellScript "java-jar-wrapper" '' + test -e ${cfg.package}/nix-support/setup-hook && source ${cfg.package}/nix-support/setup-hook + $JAVA_HOME/bin/java -jar "$@" + ''; + }; + }; + environment.systemPackages = [ cfg.package ]; environment.shellInit = '' |