diff --git a/flake.nix b/flake.nix index 8df6792..0603928 100644 --- a/flake.nix +++ b/flake.nix @@ -7,7 +7,12 @@ }; outputs = { self, nixpkgs, utils }: - utils.lib.eachSystem [ "x86_64-linux" "aarch64-linux" ] (system: + (utils.lib.eachSystem [ + "x86_64-linux" + "aarch64-linux" + "x86_64-darwin" + "aarch64-darwin" + ] (system: let sources = builtins.fromJSON (builtins.readFile ./sources.json); buildAdoptLike = with import nixpkgs { system = system; }; @@ -23,22 +28,29 @@ sha256 = value.sha256; }; version = value.java_version; - buildInputs = with pkgs; [ - alsa-lib - fontconfig - freetype - stdenv.cc.cc.lib - xorg.libX11 - xorg.libXext - xorg.libXi - xorg.libXrender - xorg.libXtst - zlib - ]; - nativeBuildInputs = with pkgs; [ autoPatchelfHook makeWrapper ]; + buildInputs = if pkgs.stdenv.isLinux then + with pkgs; [ + alsa-lib + fontconfig + freetype + stdenv.cc.cc.lib + xorg.libX11 + xorg.libXext + xorg.libXi + xorg.libXrender + xorg.libXtst + zlib + ] + else + [ ]; + nativeBuildInputs = if pkgs.stdenv.isLinux then + with pkgs; [ autoPatchelfHook makeWrapper ] + else + [ ]; dontStrip = 1; - installPhase = '' + installPhase = if pkgs.stdenv.isLinux then '' cd .. + mv $sourceRoot $out # jni.h expects jni_md.h to be in the header search path. ln -s $out/include/linux/*_md.h $out/include/ @@ -69,11 +81,31 @@ } fi done - ''; - preFixup = '' + '' else if pkgs.stdenv.isDarwin then '' + cd .. + mv $sourceRoot $out + # jni.h expects jni_md.h to be in the header search path. + ln -s $out/Contents/Home/include/darwin/*_md.h $out/Contents/Home/include/ + rm -rf $out/Home/demo + # Remove some broken manpages. + rm -rf $out/Home/man/ja* + ln -s $out/Contents/Home/* $out/ + # Propagate the setJavaClassPath setup hook from the JDK so that + # any package that depends on the JDK has $CLASSPATH set up + # properly. + mkdir -p $out/nix-support + printWords ${setJavaClassPath} > $out/nix-support/propagated-build-inputs + # Set JAVA_HOME automatically. + cat <> $out/nix-support/setup-hook + if [ -z "\''${JAVA_HOME-}" ]; then export JAVA_HOME=$out; fi + EOF + '' else + (throw "Unsupported OS"); + preFixup = if pkgs.stdenv.isLinux then '' find "$out" -name libfontmanager.so -exec \ patchelf --add-needed libfontconfig.so {} \; - ''; + '' else + ""; }; in with import nixpkgs { system = system; }; { packages = { @@ -92,5 +124,5 @@ }; defaultPackage = self.packages.${system}.temurin.stable; - }); + })); }