From 8ab7ff673ef4b84a83b281ee918efbb22ab1bcfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dyego=20Aur=C3=A9lio?= Date: Mon, 25 Aug 2025 20:32:43 -0300 Subject: [PATCH 1/2] forge-mtg: 1.6.65 -> 2.0.05 * updating install phase to copy file paths from their new locations * ensuring forge-adventure has libGl so it can launch * add mvnParameters to avoid building unnecessary packages from forge monorepo * add desktop entry file * update project homepage --- pkgs/by-name/fo/forge-mtg/no-launch4j.patch | 429 +++----------------- pkgs/by-name/fo/forge-mtg/package.nix | 75 +++- 2 files changed, 113 insertions(+), 391 deletions(-) diff --git a/pkgs/by-name/fo/forge-mtg/no-launch4j.patch b/pkgs/by-name/fo/forge-mtg/no-launch4j.patch index 7e9d9f4790a0..02731aa16fdb 100644 --- a/pkgs/by-name/fo/forge-mtg/no-launch4j.patch +++ b/pkgs/by-name/fo/forge-mtg/no-launch4j.patch @@ -1,396 +1,85 @@ -diff --git a/forge-adventure/pom.xml b/forge-adventure/pom.xml -index b35356ea76..b7ab1c775b 100644 ---- a/forge-adventure/pom.xml -+++ b/forge-adventure/pom.xml -@@ -47,131 +47,6 @@ - - - -- -- com.akathist.maven.plugins.launch4j -- launch4j-maven-plugin -- 1.7.25 -- -- -- l4j-adv -- package -- -- launch4j -- -- -- gui -- ${project.build.directory}/forge-adventure-editor-java8.exe -- ${project.build.finalName}-jar-with-dependencies.jar -- true -- forge -- src/main/config/forge-adventure-editor.ico -- -- forge.adventure.Main -- false -- anything -- -- -- 1.8.0 -- 4096 -- -- -Dfile.encoding=UTF-8 -- -- -- -- -- 1.0.0.0 -- -- -- 1.0.0.0 -- -- Forge -- Forge -- -- 1.0.0.0 -- -- -- 1.0.0.0 -- -- forge-adventure-editor -- forge-adventure-editor -- forge-adventure-editor-java8.exe -- -- -- -- -- -- l4j-adv2 -- package -- -- launch4j -- -- -- gui -- ${project.build.directory}/forge-adventure-editor.exe -- ${project.build.finalName}-jar-with-dependencies.jar -- true -- forge -- https://www.oracle.com/java/technologies/downloads/ -- src/main/config/forge-adventure-editor.ico -- -- forge.adventure.Main -- false -- anything -- -- -- 11.0.1 -- jdkOnly -- 4096 -- -- -Dfile.encoding=UTF-8 -- --add-opens java.base/java.lang=ALL-UNNAMED -- --add-opens java.base/java.math=ALL-UNNAMED -- --add-opens java.base/jdk.internal.misc=ALL-UNNAMED -- --add-opens java.base/java.nio=ALL-UNNAMED -- --add-opens=java.base/sun.nio.ch=ALL-UNNAMED -- --add-opens java.base/java.util=ALL-UNNAMED -- --add-opens java.base/java.lang.reflect=ALL-UNNAMED -- --add-opens java.base/java.text=ALL-UNNAMED -- --add-opens java.desktop/java.awt=ALL-UNNAMED -- --add-opens java.desktop/java.awt.font=ALL-UNNAMED -- --add-opens java.desktop/java.awt.image=ALL-UNNAMED -- --add-opens java.desktop/java.awt.color=ALL-UNNAMED -- --add-opens java.desktop/sun.awt.image=ALL-UNNAMED -- --add-opens java.desktop/javax.swing=ALL-UNNAMED -- --add-opens java.desktop/javax.swing.border=ALL-UNNAMED -- --add-opens java.desktop/javax.swing.event=ALL-UNNAMED -- --add-opens java.desktop/sun.swing=ALL-UNNAMED -- --add-opens java.desktop/java.beans=ALL-UNNAMED -- --add-opens java.base/java.util.concurrent=ALL-UNNAMED -- --add-opens java.base/java.net=ALL-UNNAMED -- -Dio.netty.tryReflectionSetAccessible=true -- -- -- -- -- 1.0.0.0 -- -- -- 1.0.0.0 -- -- Forge -- Forge -- -- 1.0.0.0 -- -- -- 1.0.0.0 -- -- forge-adventure-editor -- forge-adventure-editor -- forge-adventure-editor.exe -- -- -- -- -- -- -- - - com.google.code.maven-replacer-plugin - replacer diff --git a/forge-gui-desktop/pom.xml b/forge-gui-desktop/pom.xml -index 3b74663b04..f0e324b69c 100644 +index dfe902e6b9..6fe3382f27 100644 --- a/forge-gui-desktop/pom.xml +++ b/forge-gui-desktop/pom.xml -@@ -282,59 +282,6 @@ - windows-linux-release - - -- -- com.akathist.maven.plugins.launch4j -- launch4j-maven-plugin -- 2.1.2 -- -- -- l4j-gui -- package -- -- launch4j -- -- -- gui -- ${project.build.directory}/forge-java8.exe -- ${project.build.finalName}-jar-with-dependencies.jar -- true -- forge -- src/main/config/forge.ico -- -- forge.view.Main -- false -- anything -- -- -- 1.8.0 -- 4096 -- -- -Dfile.encoding=UTF-8 -- -- -- -- -- ${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.0 -- -- -- ${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.0 -- -- Forge -- Forge -- -- ${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.0 -- -- -- ${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.0 -- -- Forge -- forge -- forge-java8.exe -- -- -- -- -- - - - org.apache.maven.plugins -@@ -447,130 +394,6 @@ - windows-linux - - -- -- com.akathist.maven.plugins.launch4j -- launch4j-maven-plugin -- 2.1.2 -- -- -- l4j-gui -- package -- -- launch4j -- -- -- gui -- ${project.build.directory}/forge-java8.exe -- ${project.build.finalName}-jar-with-dependencies.jar -- true -- forge -- src/main/config/forge.ico -- -- forge.view.Main -- false -- anything -- -- -- 1.8.0 -- 4096 -- -- -Dfile.encoding=UTF-8 -- -- -- -- -- ${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.0 -- -- -- ${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.0 -- -- Forge -- Forge -- -- ${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.0 -- -- -- ${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.0 -- -- Forge -- forge -- forge-java8.exe -- -- -- -- -- -- l4j-gui2 -- package -- -- launch4j -- -- -- gui -- ${project.build.directory}/forge.exe -- ${project.build.finalName}-jar-with-dependencies.jar -- true -- forge -- https://www.oracle.com/java/technologies/downloads/ -- src/main/config/forge.ico -- -- forge.view.Main -- false -- anything -- -- -- 11.0.1 -- jdkOnly -- 4096 -- -- -Dfile.encoding=UTF-8 -- --add-opens java.base/java.lang=ALL-UNNAMED -- --add-opens java.base/java.math=ALL-UNNAMED -- --add-opens java.base/jdk.internal.misc=ALL-UNNAMED -- --add-opens java.base/java.nio=ALL-UNNAMED -- --add-opens=java.base/sun.nio.ch=ALL-UNNAMED -- --add-opens java.base/java.util=ALL-UNNAMED -- --add-opens java.base/java.lang.reflect=ALL-UNNAMED -- --add-opens java.base/java.text=ALL-UNNAMED -- --add-opens java.desktop/java.awt=ALL-UNNAMED -- --add-opens java.desktop/java.awt.font=ALL-UNNAMED -- --add-opens java.desktop/java.awt.image=ALL-UNNAMED -- --add-opens java.desktop/java.awt.color=ALL-UNNAMED -- --add-opens java.desktop/sun.awt.image=ALL-UNNAMED -- --add-opens java.desktop/javax.swing=ALL-UNNAMED -- --add-opens java.desktop/javax.swing.border=ALL-UNNAMED -- --add-opens java.desktop/javax.swing.event=ALL-UNNAMED -- --add-opens java.desktop/sun.swing=ALL-UNNAMED -- --add-opens java.desktop/java.beans=ALL-UNNAMED -- --add-opens java.base/java.util.concurrent=ALL-UNNAMED -- --add-opens java.base/java.net=ALL-UNNAMED -- -Dio.netty.tryReflectionSetAccessible=true -- -- -- -- -- ${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.0 -- -- -- ${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.0 -- -- Forge -- Forge -- -- ${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.0 -- -- -- ${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.0 -- -- Forge -- forge -- forge.exe -- -- -- -- -- -- - - - org.apache.maven.plugins -diff --git a/forge-gui-mobile-dev/pom.xml b/forge-gui-mobile-dev/pom.xml -index e7439c1e3a..de0cbc16a1 100644 ---- a/forge-gui-mobile-dev/pom.xml -+++ b/forge-gui-mobile-dev/pom.xml -@@ -64,130 +64,6 @@ - - +@@ -70,62 +70,6 @@ + + - - com.akathist.maven.plugins.launch4j - launch4j-maven-plugin -- 1.7.25 +- 2.5.1 - - -- l4j-adv +- l4j-gui - package - - launch4j - - - gui -- ${project.build.directory}/forge-adventure-java8.exe +- ${project.build.directory}/forge.exe - ${project.build.finalName}-jar-with-dependencies.jar - true - forge -- src/main/config/forge-adventure.ico +- https://bell-sw.com/pages/downloads/#jdk-17-lts +- src/main/config/forge.ico - -- forge.app.Main +- forge.view.Main - false - anything - - -- 1.8.0 +- 17 +- true - 4096 - -- -Dfile.encoding=UTF-8 +- ${mandatory.java.args} +- ${addopen.java.args} - - - - -- 1.0.0.0 +- ${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.0 - - -- 1.0.0.0 +- ${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.0 - - Forge - Forge - -- 1.0.0.0 +- ${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.0 - - -- 1.0.0.0 +- ${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.0 - -- forge-adventure -- forge-adventure -- forge-adventure-java8.exe +- Forge +- forge +- forge.exe - - - -- +- +- + + com.google.code.maven-replacer-plugin + replacer +diff --git a/forge-gui-mobile-dev/pom.xml b/forge-gui-mobile-dev/pom.xml +index 168ecba1dc..748dbf47b7 100644 +--- a/forge-gui-mobile-dev/pom.xml ++++ b/forge-gui-mobile-dev/pom.xml +@@ -60,57 +60,6 @@ + 17 + + +- +- com.akathist.maven.plugins.launch4j +- launch4j-maven-plugin +- 2.5.1 +- - -- l4j-adv2 +- l4j-adv - package - - launch4j @@ -401,40 +90,14 @@ index e7439c1e3a..de0cbc16a1 100644 - ${project.build.finalName}-jar-with-dependencies.jar - true - forge -- https://www.oracle.com/java/technologies/downloads/ +- https://bell-sw.com/pages/downloads/#jdk-17-lts - src/main/config/forge-adventure.ico -- -- forge.app.Main -- false -- anything -- - -- 11.0.1 -- jdkOnly +- 17 +- true - 4096 - -- -Dfile.encoding=UTF-8 -- --add-opens java.base/java.lang=ALL-UNNAMED -- --add-opens java.base/java.math=ALL-UNNAMED -- --add-opens java.base/jdk.internal.misc=ALL-UNNAMED -- --add-opens java.base/java.nio=ALL-UNNAMED -- --add-opens=java.base/sun.nio.ch=ALL-UNNAMED -- --add-opens java.base/java.util=ALL-UNNAMED -- --add-opens java.base/java.lang.reflect=ALL-UNNAMED -- --add-opens java.base/java.text=ALL-UNNAMED -- --add-opens java.desktop/java.awt=ALL-UNNAMED -- --add-opens java.desktop/java.awt.font=ALL-UNNAMED -- --add-opens java.desktop/java.awt.image=ALL-UNNAMED -- --add-opens java.desktop/java.awt.color=ALL-UNNAMED -- --add-opens java.desktop/sun.awt.image=ALL-UNNAMED -- --add-opens java.desktop/javax.swing=ALL-UNNAMED -- --add-opens java.desktop/javax.swing.border=ALL-UNNAMED -- --add-opens java.desktop/javax.swing.event=ALL-UNNAMED -- --add-opens java.desktop/sun.swing=ALL-UNNAMED -- --add-opens java.desktop/java.beans=ALL-UNNAMED -- --add-opens java.base/java.util.concurrent=ALL-UNNAMED -- --add-opens java.base/java.net=ALL-UNNAMED -- -Dio.netty.tryReflectionSetAccessible=true +- ${mandatory.java.args} - - - @@ -462,5 +125,5 @@ index e7439c1e3a..de0cbc16a1 100644 - - - maven-assembly-plugin - + com.google.code.maven-replacer-plugin + replacer diff --git a/pkgs/by-name/fo/forge-mtg/package.nix b/pkgs/by-name/fo/forge-mtg/package.nix index dedce0dd3cd3..683fe9a51f31 100644 --- a/pkgs/by-name/fo/forge-mtg/package.nix +++ b/pkgs/by-name/fo/forge-mtg/package.nix @@ -6,16 +6,20 @@ maven, makeWrapper, openjdk, + libGL, + makeDesktopItem, + copyDesktopItems, + imagemagick, }: let - version = "1.6.65"; + version = "2.0.05"; src = fetchFromGitHub { owner = "Card-Forge"; repo = "forge"; rev = "forge-${version}"; - hash = "sha256-MCJl3nBHbX/O24bzD4aQ12eMWxYY2qJC5vomvtsIBek="; + hash = "sha256-71CZBI4FvN5X7peDjhv+0cdTYv8hWwzM8ePdvQSb6QI="; }; # launch4j downloads and runs a native binary during the package phase. @@ -26,11 +30,56 @@ maven.buildMavenPackage { pname = "forge-mtg"; inherit version src patches; - mvnHash = "sha256-ouF0Ja3oGrlUCcT0PzI5i9FQ+oLdEhE/LvhJ0QGErvI="; + mvnHash = "sha256-krPOUaJTo5i3imkDvEkBJH3W01y1KypdvitqmZ5JMMA="; doCheck = false; # Needs a running Xorg - nativeBuildInputs = [ makeWrapper ]; + nativeBuildInputs = [ + makeWrapper + copyDesktopItems + imagemagick + ]; + desktopItems = [ + (makeDesktopItem { + name = "forge"; + exec = "forge"; + actions = { + forge-adventure = { + exec = "forge-adventure"; + name = "Play Adventure"; + }; + forge-adventure-editor = { + exec = "forge-adventure-editor"; + name = "Adventure Editor"; + }; + forge-classic = { + exec = "forge"; + name = "Play Classic"; + }; + }; + icon = "forge-mtg"; + comment = "Magic: the Gathering card game with rules enforcement"; + desktopName = "Forge MTG"; + genericName = "Card Game"; + categories = [ + "Game" + "BoardGame" + ]; + keywords = [ + "Magic" + "MTG" + "Card Game" + "Trading Card Game" + "TCG" + ]; + }) + ]; + + mvnParameters = lib.escapeShellArgs [ + "-pl" + ":adventure-editor,:forge-gui-desktop,:forge-gui-mobile-dev" # forge-gui-mobile-dev is required for forge-adventure + "--also-make" + ]; installPhase = '' runHook preInstall @@ -40,16 +89,25 @@ maven.buildMavenPackage { forge-gui-desktop/target/forge-gui-desktop-${version}-jar-with-dependencies.jar \ forge-gui-mobile-dev/target/forge-adventure.sh \ forge-gui-mobile-dev/target/forge-gui-mobile-dev-${version}-jar-with-dependencies.jar \ - forge-adventure/target/forge-adventure-editor.sh \ - forge-adventure/target/forge-adventure-${version}-jar-with-dependencies.jar \ + adventure-editor/target/adventure-editor-jar-with-dependencies.jar \ forge-gui/res \ $out/share/forge + cp adventure-editor/target/adventure-editor.sh $out/share/forge/forge-adventure-editor.sh + + mkdir -p $out/share/icons/hicolor/128x128/apps + magick AppIcon.png -resize 128x128 $out/share/icons/hicolor/128x128/apps/forge-mtg.png + runHook postInstall ''; preFixup = '' for commandToInstall in forge forge-adventure forge-adventure-editor; do chmod 555 $out/share/forge/$commandToInstall.sh + PREFIX_CMD="" + if [ "$commandToInstall" = "forge-adventure" ]; then + PREFIX_CMD="--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libGL ]}" + fi + makeWrapper $out/share/forge/$commandToInstall.sh $out/bin/$commandToInstall \ --prefix PATH : ${ lib.makeBinPath [ @@ -59,13 +117,14 @@ maven.buildMavenPackage { ] } \ --set JAVA_HOME ${openjdk}/lib/openjdk \ - --set SENTRY_DSN "" + --set SENTRY_DSN "" \ + $PREFIX_CMD done ''; meta = with lib; { description = "Magic: the Gathering card game with rules enforcement"; - homepage = "https://www.slightlymagic.net/forum/viewforum.php?f=26"; + homepage = "https://card-forge.github.io/forge"; license = licenses.gpl3Plus; maintainers = with maintainers; [ eigengrau ]; }; From b7609ba68d220133f8918a1989aa6eff59aeae48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dyego=20Aur=C3=A9lio?= Date: Thu, 21 Aug 2025 09:41:28 -0300 Subject: [PATCH 2/2] forge-mtg: add updateScript MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Christopher Fredén --- pkgs/by-name/fo/forge-mtg/package.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/by-name/fo/forge-mtg/package.nix b/pkgs/by-name/fo/forge-mtg/package.nix index 683fe9a51f31..ef078bbe0298 100644 --- a/pkgs/by-name/fo/forge-mtg/package.nix +++ b/pkgs/by-name/fo/forge-mtg/package.nix @@ -10,6 +10,7 @@ makeDesktopItem, copyDesktopItems, imagemagick, + nix-update-script, }: let @@ -122,6 +123,10 @@ maven.buildMavenPackage { done ''; + passthru.updateScript = nix-update-script { + extraArgs = [ "--version-regex=forge-(.*)" ]; + }; + meta = with lib; { description = "Magic: the Gathering card game with rules enforcement"; homepage = "https://card-forge.github.io/forge";