nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at python-updates 120 lines 3.3 kB view raw
1{ 2 lib, 3 stdenv, 4 fetchFromGitHub, 5 copyDesktopItems, 6 makeDesktopItem, 7 makeWrapper, 8 wrapGAppsHook3, 9 gvfs, 10 maven, 11 jre, 12 udevCheckHook, 13}: 14let 15 pkgDescription = "All-in-one tool for managing Nintendo Switch homebrew"; 16 17 selectSystem = 18 attrs: 19 attrs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); 20 21 jreWithJavaFX = jre.override { enableJavaFX = true; }; 22in 23maven.buildMavenPackage rec { 24 pname = "ns-usbloader"; 25 version = "7.2"; 26 27 src = fetchFromGitHub { 28 owner = "developersu"; 29 repo = "ns-usbloader"; 30 rev = "v${version}"; 31 sha256 = "sha256-nZfAZ+IjoYXEWwH9oOhOQ5TOYUNiAGAqhHRhskyx/Vo="; 32 }; 33 34 patches = [ 35 ./no-launch4j.patch 36 ./make-deterministic.patch 37 ]; 38 39 # JavaFX pulls in architecture dependent jar dependencies. :( 40 # May be possible to unify these, but could lead to huge closure sizes. 41 mvnHash = selectSystem { 42 x86_64-linux = "sha256-vXZAlZOh9pXNF1RL78oQRal5pkXFRKDz/7SP9LibgiA="; 43 aarch64-linux = "sha256-xC+feb41EPi30gBrVR8usanVULI2Pt0knztzNagPQiw="; 44 }; 45 46 nativeBuildInputs = [ 47 copyDesktopItems 48 makeWrapper 49 wrapGAppsHook3 50 gvfs 51 udevCheckHook 52 ]; 53 54 doCheck = false; 55 56 doInstallCheck = true; 57 58 # Don't wrap binaries twice. 59 dontWrapGApps = true; 60 61 ### Issues: 62 # * Set us to only use software rendering with `-Dprism.order=sw`, had a hard time 63 # getting `prism_es2` happy with NixOS's GL/GLES. 64 # * Currently, there's also a lot of `Failed to build parent project for org.openjfx:javafx-*` 65 # at build, but jar runs fine when using `jreWithJavaFX`. 66 67 installPhase = '' 68 runHook preInstall 69 70 mkdir -p $out/share/java 71 install -Dm644 target/ns-usbloader-${version}.jar $out/share/java/ns-usbloader.jar 72 73 mkdir -p $out/lib/udev/rules.d 74 install -Dm644 ${./99-ns-usbloader.rules} $out/lib/udev/rules.d/99-ns-usbloader.rules 75 76 mkdir -p $out/share/icons/hicolor 77 install -Dm644 target/classes/res/app_icon32x32.png $out/share/icons/hicolor/32x32/apps/ns-usbloader.png 78 install -Dm644 target/classes/res/app_icon48x48.png $out/share/icons/hicolor/48x48/apps/ns-usbloader.png 79 install -Dm644 target/classes/res/app_icon64x64.png $out/share/icons/hicolor/64x64/apps/ns-usbloader.png 80 install -Dm644 target/classes/res/app_icon128x128.png $out/share/icons/hicolor/128x128/apps/ns-usbloader.png 81 82 runHook postInstall 83 ''; 84 85 preFixup = '' 86 mkdir -p $out/bin 87 makeWrapper ${jreWithJavaFX}/bin/java $out/bin/ns-usbloader \ 88 --append-flags "-Dprism.order=sw -jar $out/share/java/ns-usbloader.jar" \ 89 "''${gappsWrapperArgs[@]}" 90 ''; 91 92 desktopItems = [ 93 (makeDesktopItem { 94 type = "Application"; 95 name = "ns-usbloader"; 96 desktopName = "NS-USBLoader"; 97 comment = pkgDescription; 98 exec = "ns-usbloader"; 99 icon = "ns-usbloader"; 100 categories = [ "Game" ]; 101 terminal = false; 102 keywords = [ 103 "nintendo" 104 "switch" 105 ]; 106 }) 107 ]; 108 109 meta = { 110 description = pkgDescription; 111 homepage = "https://github.com/developersu/ns-usbloader"; 112 license = lib.licenses.gpl3Only; 113 maintainers = with lib.maintainers; [ soupglasses ]; 114 platforms = [ 115 "x86_64-linux" 116 "aarch64-linux" 117 ]; 118 mainProgram = "ns-usbloader"; 119 }; 120}