From 0c343ce16e9f1fcc930b644a97025a48fed15afa Mon Sep 17 00:00:00 2001
From: TomaSajt <62384384+TomaSajt@users.noreply.github.com>
Date: Fri, 24 Nov 2023 01:06:45 +0100
Subject: [PATCH] quark-goldleaf: init at 1.0.0
---
.../qu/quark-goldleaf/99-quark-goldleaf.rules | 2 +
.../fix-maven-plugin-versions.patch | 88 ++++++++++++++
pkgs/by-name/qu/quark-goldleaf/package.nix | 114 ++++++++++++++++++
.../qu/quark-goldleaf/remove-pom-jfx.patch | 93 ++++++++++++++
4 files changed, 297 insertions(+)
create mode 100644 pkgs/by-name/qu/quark-goldleaf/99-quark-goldleaf.rules
create mode 100644 pkgs/by-name/qu/quark-goldleaf/fix-maven-plugin-versions.patch
create mode 100644 pkgs/by-name/qu/quark-goldleaf/package.nix
create mode 100644 pkgs/by-name/qu/quark-goldleaf/remove-pom-jfx.patch
diff --git a/pkgs/by-name/qu/quark-goldleaf/99-quark-goldleaf.rules b/pkgs/by-name/qu/quark-goldleaf/99-quark-goldleaf.rules
new file mode 100644
index 000000000000..aa79720d7b55
--- /dev/null
+++ b/pkgs/by-name/qu/quark-goldleaf/99-quark-goldleaf.rules
@@ -0,0 +1,2 @@
+# Nintendo Switch HOS
+SUBSYSTEM=="usb", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="3000", MODE="0666"
diff --git a/pkgs/by-name/qu/quark-goldleaf/fix-maven-plugin-versions.patch b/pkgs/by-name/qu/quark-goldleaf/fix-maven-plugin-versions.patch
new file mode 100644
index 000000000000..efe2e13c69cc
--- /dev/null
+++ b/pkgs/by-name/qu/quark-goldleaf/fix-maven-plugin-versions.patch
@@ -0,0 +1,88 @@
+diff --git a/pom.xml b/pom.xml
+index 5a683ca..be71e5d 100644
+--- a/pom.xml
++++ b/pom.xml
+@@ -104,7 +105,7 @@
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+- 3.1
++ 3.11.0
+
+
+ 1.8
+@@ -113,7 +114,7 @@
+
+
+ maven-jar-plugin
+- 2.4
++ 3.3.0
+
+
+ default-jar
+@@ -134,7 +135,7 @@
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+- 3.1.0
++ 3.6.0
+
+ Quark
+ false
+@@ -157,6 +158,56 @@
+
+
+
++
++
++ org.apache.maven.plugins
++ maven-enforcer-plugin
++ 3.3.0
++
++
++ require-all-plugin-versions-to-be-set
++ validate
++
++ enforce
++
++
++
++
++
++
++
++
++
++
++ org.apache.maven.plugins
++ maven-deploy-plugin
++ 3.1.1
++
++
++ org.apache.maven.plugins
++ maven-resources-plugin
++ 3.3.1
++
++
++ org.apache.maven.plugins
++ maven-site-plugin
++ 4.0.0-M9
++
++
++ org.apache.maven.plugins
++ maven-install-plugin
++ 3.1.1
++
++
++ org.apache.maven.plugins
++ maven-clean-plugin
++ 3.3.1
++
++
++ org.apache.maven.plugins
++ maven-surefire-plugin
++ 3.1.2
++
+
+
+
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 000000000000..71321a76fbd5
--- /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;
+ };
+}
+
diff --git a/pkgs/by-name/qu/quark-goldleaf/remove-pom-jfx.patch b/pkgs/by-name/qu/quark-goldleaf/remove-pom-jfx.patch
new file mode 100644
index 000000000000..3a28ee27086a
--- /dev/null
+++ b/pkgs/by-name/qu/quark-goldleaf/remove-pom-jfx.patch
@@ -0,0 +1,93 @@
+diff --git a/pom.xml b/pom.xml
+index 51ce56b..44dcd09 100644
+--- a/pom.xml
++++ b/pom.xml
+@@ -15,72 +15,6 @@
+
+
+
+-
+- org.openjfx
+- javafx-controls
+- 17
+- linux
+- compile
+-
+-
+- org.openjfx
+- javafx-controls
+- 17
+- win
+- compile
+-
+-
+- org.openjfx
+- javafx-controls
+- 17
+- mac
+- compile
+-
+-
+-
+- org.openjfx
+- javafx-fxml
+- 17
+- linux
+- compile
+-
+-
+- org.openjfx
+- javafx-fxml
+- 17
+- win
+- compile
+-
+-
+- org.openjfx
+- javafx-fxml
+- 17
+- mac
+- compile
+-
+-
+-
+- org.openjfx
+- javafx-graphics
+- 17
+- linux
+- compile
+-
+-
+- org.openjfx
+- javafx-graphics
+- 17
+- win
+- compile
+-
+-
+- org.openjfx
+- javafx-graphics
+- 17
+- mac
+- compile
+-
+-
+
+ org.usb4java
+ usb4java-javax
+@@ -123,15 +57,6 @@
+
+
+
+-
+- org.openjfx
+- javafx-maven-plugin
+- 0.0.8
+-
+- xortroll.goldleaf.quark.Main
+-
+-
+-
+
+ org.apache.maven.plugins
+ maven-assembly-plugin