diff options
Diffstat (limited to 'pkgs/by-name/qu/quark-goldleaf/package.nix')
-rw-r--r-- | pkgs/by-name/qu/quark-goldleaf/package.nix | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/pkgs/by-name/qu/quark-goldleaf/package.nix b/pkgs/by-name/qu/quark-goldleaf/package.nix new file mode 100644 index 0000000000000..71321a76fbd5f --- /dev/null +++ b/pkgs/by-name/qu/quark-goldleaf/package.nix @@ -0,0 +1,114 @@ +{ lib +, jdk +, maven +, fetchFromGitHub +, fetchpatch +, makeDesktopItem +, copyDesktopItems +, imagemagick +, wrapGAppsHook +, gtk3 +}: + +let + jdk' = jdk.override { enableJavaFX = true; }; + maven' = maven.override { jdk = jdk'; }; +in +maven'.buildMavenPackage rec { + pname = "quark-goldleaf"; + version = "1.0.0"; + + src = fetchFromGitHub { + owner = "XorTroll"; + repo = "Goldleaf"; + rev = version; + hash = "sha256-gagIQGOiygJ0Onm0SrkbFWaovqWX2WJNx7LpSRheCLM="; + }; + + sourceRoot = "${src.name}/Quark"; + + patches = [ + ./fix-maven-plugin-versions.patch + ./remove-pom-jfx.patch + (fetchpatch { + name = "fix-config-path.patch"; + url = "https://github.com/XorTroll/Goldleaf/commit/714ecc2755df9c1252615ad02cafff9c0311a739.patch"; + hash = "sha256-4j+6uLIOdltZ4XIb3OtOzZg9ReH9660gZMMNQpHnn4o="; + relative = "Quark"; + }) + ]; + + mvnHash = "sha256-gA3HsQZFa2POP9cyJLb1l8t3hrJYzDowhJU+5Xl79p4="; + + # set fixed build timestamp for deterministic jar + mvnParameters = "-Dproject.build.outputTimestamp=1980-01-01T00:00:02Z"; + + nativeBuildInputs = [ + imagemagick # for icon conversion + copyDesktopItems + wrapGAppsHook + ]; + + buildInputs = [ gtk3 ]; + + # don't double-wrap + dontWrapGApps = true; + + installPhase = '' + runHook preInstall + + install -Dm644 ${./99-quark-goldleaf.rules} $out/etc/udev/rules.d/99-quark-goldleaf.rules + install -Dm644 target/Quark.jar $out/share/java/quark-goldleaf.jar + + for size in 16 24 32 48 64 128; do + mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps + convert -resize "$size"x"$size" src/main/resources/Icon.png $out/share/icons/hicolor/"$size"x"$size"/apps/quark-goldleaf.png + done + + runHook postInstall + ''; + + postFixup = '' + # This is in postFixup because gappsWrapperArgs are generated during preFixup + makeWrapper ${jdk'}/bin/java $out/bin/quark-goldleaf \ + "''${gappsWrapperArgs[@]}" \ + --add-flags "-jar $out/share/java/quark-goldleaf.jar" + ''; + + desktopItems = [ + (makeDesktopItem { + name = "quark-goldleaf"; + exec = "quark-goldleaf"; + icon = "quark-goldleaf"; + desktopName = "Quark"; + comment = meta.description; + terminal = false; + categories = [ "Utility" "FileTransfer" ]; + keywords = [ "nintendo" "switch" "goldleaf" ]; + }) + ]; + + meta = { + changelog = "https://github.com/XorTroll/Goldleaf/releases/tag/${src.rev}"; + description = "A GUI tool for transfering files between a computer and a Nintendo Switch running Goldleaf"; + homepage = "https://github.com/XorTroll/Goldleaf#quark-and-remote-browsing"; + longDescription = '' + ${meta.description} + + For the program to work properly, you will have to install Nintendo Switch udev rules. + + You can either do this by enabling the NixOS module: + + `programs.quark-goldleaf.enable = true;` + + or by adding the package manually to udev packages: + + `services.udev.packages = [ pkgs.quark-goldleaf ]; + ''; + license = lib.licenses.gpl3Only; + mainProgram = "quark-goldleaf"; + maintainers = with lib.maintainers; [ tomasajt ]; + platforms = with lib.platforms; linux ++ darwin; + }; +} + |