diff options
author | Tristan Ross <tross@ezoic.com> | 2022-12-30 13:50:57 -0800 |
---|---|---|
committer | tross <tross@ezoic.com> | 2023-01-13 13:46:31 -0800 |
commit | 9fdd97298b6b8b0a8385ada8b81d9d1d56ed7c34 (patch) | |
tree | 51071de78c53dff0ea20085367f5376cee11ab9a /nixos/modules/programs/java.nix | |
parent | cccb11da53c58e7d3950f202954d3963901f68c1 (diff) | |
download | nixpkgs-9fdd97298b6b8b0a8385ada8b81d9d1d56ed7c34.tar nixpkgs-9fdd97298b6b8b0a8385ada8b81d9d1d56ed7c34.tar.gz nixpkgs-9fdd97298b6b8b0a8385ada8b81d9d1d56ed7c34.tar.bz2 nixpkgs-9fdd97298b6b8b0a8385ada8b81d9d1d56ed7c34.tar.lz nixpkgs-9fdd97298b6b8b0a8385ada8b81d9d1d56ed7c34.tar.xz nixpkgs-9fdd97298b6b8b0a8385ada8b81d9d1d56ed7c34.tar.zst nixpkgs-9fdd97298b6b8b0a8385ada8b81d9d1d56ed7c34.zip |
nixos/java: add binfmt option
Diffstat (limited to 'nixos/modules/programs/java.nix')
-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 4f03c1f3ff2..c5f83858d06 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 = '' |