summary refs log tree commit diff
path: root/nixos/modules/programs/java.nix
diff options
context:
space:
mode:
authorTristan Ross <tross@ezoic.com>2022-12-30 13:50:57 -0800
committertross <tross@ezoic.com>2023-01-13 13:46:31 -0800
commit9fdd97298b6b8b0a8385ada8b81d9d1d56ed7c34 (patch)
tree51071de78c53dff0ea20085367f5376cee11ab9a /nixos/modules/programs/java.nix
parentcccb11da53c58e7d3950f202954d3963901f68c1 (diff)
downloadnixpkgs-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.nix24
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 = ''