this repo has no description
at main 110 lines 4.2 kB view raw
1rec { 2 description = "Paper Mario (N64) asset editor"; 3 inputs = { 4 nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05"; 5 gradle-dot-nix.url = "github:CrazyChaoz/gradle-dot-nix"; 6 }; 7 outputs = { nixpkgs, gradle-dot-nix, ... }: 8 let 9 javaVersion = 17; 10 supportedSystems = [ "x86_64-linux" "x86_64-darwin" "x86_64-darwin" "aarch64-darwin" ]; 11 forEachSupportedSystem = f: nixpkgs.lib.genAttrs supportedSystems (system: f { 12 pkgs = import nixpkgs { inherit system; }; 13 }); 14 makeLibPath = pkgs: (with pkgs; lib.makeLibraryPath [ 15 libGL 16 ]); 17 in { 18 devShells = forEachSupportedSystem ({ pkgs }: let 19 jdk = pkgs."jdk${toString javaVersion}"; 20 gradle = pkgs.gradle.override { java = jdk; }; 21 lombok = pkgs.lombok.override { inherit jdk; }; 22 jdtls = pkgs.jdt-language-server.override { inherit jdk; }; 23 in { 24 default = pkgs.mkShell { 25 packages = [ 26 gradle 27 jdk 28 jdtls 29 ] ++ pkgs.lib.optionals pkgs.stdenv.isLinux [ 30 # for tinyfiledialogs 31 pkgs.gnome.zenity 32 ]; 33 shellHook = 34 let 35 javaOptions = "-javaagent:${lombok}/share/java/lombok.jar -Dsun.java2d.uiScale=2 -Dsun.awt.xembedserver=true"; 36 prev = "\${JAVA_TOOL_OPTIONS:+ $JAVA_TOOL_OPTIONS}"; 37 in 38 '' 39 export JAVA_TOOL_OPTIONS="${javaOptions}${prev}" 40 export JAVA_HOME="${jdk}" 41 export GRADLE_HOME="${gradle}" 42 export LD_LIBRARY_PATH="${makeLibPath pkgs}" 43 export _JAVA_AWT_WM_NONREPARENTING=1 # Wayland issues 44 ''; 45 }; 46 }); 47 packages = forEachSupportedSystem ({ pkgs }: 48 let 49 gradle-init-script = (import gradle-dot-nix { 50 inherit pkgs; 51 gradle-verification-metadata-file = ./gradle/verification-metadata.xml; # generated by `gradle -M sha256 createReleaseZip` 52 }).gradle-init; 53 pname = "star-rod"; 54 desktopItem = pkgs.makeDesktopItem { 55 name = pname; 56 desktopName = "Star Rod"; 57 exec = pname; 58 comment = description; 59 type = "Application"; 60 categories = [ "Development" "3DGraphics" "Java" ]; 61 keywords = [ "Paper Mario" "Nintendo 64" "ROM Hacking" "Modding" ]; 62 icon = "star-rod"; 63 terminal = false; 64 startupWMClass = "app-StarRodMain"; 65 }; 66 in { 67 default = pkgs.stdenv.mkDerivation rec { 68 inherit pname; 69 version = builtins.elemAt (builtins.match "^.*version=([[:digit:].]+).*$" (builtins.readFile ./app.properties)) 0; 70 src = ./.; 71 nativeBuildInputs = let 72 jdk = pkgs."jdk${toString javaVersion}"; 73 gradle = pkgs.gradle.override { java = jdk; }; 74 in [ 75 pkgs.makeWrapper 76 pkgs.unzip 77 78 gradle 79 jdk 80 ]; 81 buildPhase = '' 82 export GRADLE_USER_HOME="/tmp" # https://github.com/NixOS/nixpkgs/issues/34707 83 gradle createReleaseZip --info -I ${gradle-init-script} --offline --full-stacktrace 84 ''; 85 installPhase = '' 86 unzip -d $out build/release/StarRod-*.zip 87 rm $out/StarRod.bat 88 89 mkdir -p $out/share/java 90 mv $out/StarRod.jar $out/share/java 91 92 mkdir -p $out/bin 93 makeWrapper ${pkgs.jre}/bin/java $out/bin/${pname} \ 94 --add-flags "-cp $out/share/java/StarRod.jar -mx2G -Djava.library.path=${makeLibPath pkgs} app.StarRodMain" 95 96 # TODO: icon 97 #install -Dm444 logo_512.png $out/share/icons/hicolor/512x512/apps/${pname}.png 98 install -Dm444 -t $out/share/applications ${desktopItem}/share/applications/* 99 ''; 100 meta = with pkgs.lib; { 101 homepage = "https://github.com/z64a/star-rod"; 102 inherit description; 103 mainProgram = pname; 104 license = licenses.mit; 105 platforms = supportedSystems; 106 }; 107 }; 108 }); 109 }; 110}