diff --git a/pkgs/games/forge-mtg/default.nix b/pkgs/games/forge-mtg/default.nix new file mode 100644 index 000000000000..5d88e8777e63 --- /dev/null +++ b/pkgs/games/forge-mtg/default.nix @@ -0,0 +1,95 @@ +{ coreutils +, fetchFromGitHub +, gnused +, lib +, maven +, makeWrapper +, openjdk +, stdenv +}: + +let + version = "1.6.53"; + + src = fetchFromGitHub { + owner = "Card-Forge"; + repo = "forge"; + rev = "forge-${version}"; + sha256 = "sha256-tNPG90mw8HZjp37YJ9JQlOBiVNPRo6xuNur651Adva8="; + }; + + # launch4j downloads and runs a native binary during the package phase. + patches = [ ./no-launch4j.patch ]; + + mavenRepository = stdenv.mkDerivation { + pname = "forge-mtg-maven-repository"; + inherit version src patches; + + nativeBuildInputs = [ maven ]; + + buildPhase = '' + runHook preBuild + # Tests need a running Xorg. + mvn package -Dmaven.repo.local=$out -DskipTests + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + find $out -type f \( \ + -name \*.lastUpdated \ + -o -name resolver-status.properties \ + -o -name _remote.repositories \) \ + -delete + runHook postInstall + ''; + + outputHashAlgo = "sha256"; + outputHashMode = "recursive"; + outputHash = "sha256-6FTbYXaF3rBIZov2WJxjG/ovmvimjXFPaFchAduVzI8="; + }; + +in stdenv.mkDerivation { + pname = "forge-mtg"; + inherit version src patches; + + nativeBuildInputs = [ maven makeWrapper ]; + + buildPhase = '' + runHook preBuild + # Tests need a running Xorg. + mvn --offline -Dmaven.repo.local=${mavenRepository} -DskipTests package; + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + mkdir -pv $out/{bin,share/forge} + cp -av \ + forge-gui-desktop/target/forge.sh \ + forge-gui-desktop/target/forge-gui-desktop-${version}-jar-with-dependencies.jar \ + forge-adventure/target/forge-adventure.sh \ + forge-adventure/target/forge-adventure-${version}-jar-with-dependencies.jar \ + forge-gui/res \ + $out/share/forge + runHook postInstall + ''; + + preFixup = '' + for commandToInstall in forge forge-adventure; do + chmod 555 $out/share/forge/$commandToInstall.sh + makeWrapper $out/share/forge/$commandToInstall.sh $out/bin/$commandToInstall \ + --prefix PATH : ${lib.makeBinPath [ coreutils openjdk gnused ]} \ + --set JAVA_HOME ${openjdk}/lib/openjdk \ + --set SENTRY_DSN "" + done + ''; + + meta = with lib; { + description = "Magic: the Gathering card game with rules enforcement"; + homepage = "https://www.slightlymagic.net/forum/viewforum.php?f=26"; + platforms = openjdk.meta.platforms; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ eigengrau ]; + }; +} diff --git a/pkgs/games/forge-mtg/no-launch4j.patch b/pkgs/games/forge-mtg/no-launch4j.patch new file mode 100644 index 000000000000..ea4d674be170 --- /dev/null +++ b/pkgs/games/forge-mtg/no-launch4j.patch @@ -0,0 +1,333 @@ +diff --git a/forge-adventure/pom.xml b/forge-adventure/pom.xml +index 4d81b150e0..80dd1e04cb 100644 +--- a/forge-adventure/pom.xml ++++ b/forge-adventure/pom.xml +@@ -41,131 +41,6 @@ + + + +- +- com.akathist.maven.plugins.launch4j +- launch4j-maven-plugin +- 1.7.25 +- +- +- l4j-adv +- package +- +- launch4j +- +- +- gui +- ${project.build.directory}/forge-adventure-java8.exe +- ${project.build.finalName}-jar-with-dependencies.jar +- true +- forge +- src/main/config/forge-adventure.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 +- forge-adventure +- forge-adventure-java8.exe +- +- +- +- +- +- l4j-adv2 +- package +- +- launch4j +- +- +- gui +- ${project.build.directory}/forge-adventure.exe +- ${project.build.finalName}-jar-with-dependencies.jar +- true +- forge +- https://www.oracle.com/java/technologies/downloads/ +- src/main/config/forge-adventure.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 +- forge-adventure +- forge-adventure.exe +- +- +- +- +- +- +- + + com.google.code.maven-replacer-plugin + replacer +diff --git a/forge-gui-desktop/pom.xml b/forge-gui-desktop/pom.xml +index 218e641096..e8d0905a3d 100644 +--- a/forge-gui-desktop/pom.xml ++++ b/forge-gui-desktop/pom.xml +@@ -231,60 +231,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 + maven-antrun-plugin +@@ -396,131 +342,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 + maven-antrun-plugin diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b6c66d3d7b1e..7cbf3ace0d0d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -32890,6 +32890,8 @@ with pkgs; flock = callPackage ../development/tools/flock { }; + forge-mtg = callPackage ../games/forge-mtg { }; + freecell-solver = callPackage ../games/freecell-solver { }; freeciv = callPackage ../games/freeciv {