summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Hendrickson <ryan.hendrickson@alum.mit.edu>2023-05-18 21:31:03 -0400
committergithub-actions[bot] <github-actions[bot]@users.noreply.github.com>2023-06-03 19:33:27 +0000
commit75e5449f6413dc6e9e4ca07dbbfe08f4305ea2b3 (patch)
tree002f4e5a2ea0d84d5da6855dfd51a9e8d9909302
parentMerge pull request #235768 from NixOS/backport-235672-to-release-23.05 (diff)
downloadnixpkgs-origin/backport-232728-to-release-23.05.tar.gz
(cherry picked from commit 45eb557afafd24a5d938e753ba1c6f8edee978a7)
-rw-r--r--pkgs/games/maptool/default.nix119
-rw-r--r--pkgs/top-level/all-packages.nix8
2 files changed, 127 insertions, 0 deletions
diff --git a/pkgs/games/maptool/default.nix b/pkgs/games/maptool/default.nix
new file mode 100644
index 000000000000..53d8d89d6920
--- /dev/null
+++ b/pkgs/games/maptool/default.nix
@@ -0,0 +1,119 @@
+{ lib
+, copyDesktopItems
+, fetchurl
+, ffmpeg
+, gitUpdater
+, jre
+, libarchive
+, makeDesktopItem
+, openjfx
+, stdenvNoCC
+, wrapGAppsHook
+}:
+let
+ pname = "maptool";
+ version = "1.13.0";
+ repoBase = "https://github.com/RPTools/${pname}";
+ src = fetchurl {
+ url = "${repoBase}/releases/download/${version}/MapTool-${version}.jar";
+ hash = "sha256-0jiUYdr2KwMNc8VBgJsEsf4dkrzYfMGwv+jT1RLhUAg=";
+ };
+
+ icon = fetchurl {
+ url = "https://raw.githubusercontent.com/RPTools/${pname}/${version}/package/linux/MapTool.png";
+ hash = "sha256-xkVYjMprTanHu8r4b9PHORI8E1aJp+9KDSP5mqCE8ew=";
+ };
+
+ meta = with lib; {
+ description = "Virtual Tabletop for playing roleplaying games with remote players or face to face";
+ homepage = "https://www.rptools.net/toolbox/maptool/";
+ sourceProvenance = with sourceTypes; [
+ binaryBytecode
+ binaryNativeCode
+ ];
+ license = licenses.agpl3;
+ maintainers = with maintainers; [ rhendric ];
+ };
+
+ javafxModules = [ "base" "controls" "media" "swing" "web" "fxml" "graphics" ];
+
+ classpath =
+ lib.concatMap (mod: [
+ "${openjfx}/modules_src/javafx.${mod}/module-info.java"
+ "${openjfx}/modules/javafx.${mod}"
+ "${openjfx}/modules_libs/javafx.${mod}"
+ ]) javafxModules ++
+ [ src ];
+
+ jvmArgs = [
+ "-cp" (lib.concatStringsSep ":" classpath)
+ "-Xss8M"
+ "-Dsun.java2d.d3d=false"
+ "-Dfile.encoding=UTF-8"
+ "-Dpolyglot.engine.WarnInterpreterOnly=false"
+ "-XX:+ShowCodeDetailsInExceptionMessages"
+ "--add-opens=java.desktop/java.awt=ALL-UNNAMED"
+ "--add-opens=java.desktop/java.awt.geom=ALL-UNNAMED"
+ "--add-opens=java.desktop/sun.awt.geom=ALL-UNNAMED"
+ "--add-opens=java.base/java.util=ALL-UNNAMED"
+ "--add-opens=javafx.web/javafx.scene.web=ALL-UNNAMED"
+ "--add-opens=javafx.web/com.sun.webkit=ALL-UNNAMED"
+ "--add-opens=javafx.web/com.sun.webkit.dom=ALL-UNNAMED"
+ "--add-opens=java.desktop/javax.swing=ALL-UNNAMED"
+ "--add-opens=java.desktop/sun.awt.shell=ALL-UNNAMED"
+ "--add-opens=java.desktop/com.sun.java.swing.plaf.windows=ALL-UNNAMED"
+
+ # disable telemetry (the empty DSN disables the Sentry library, setting the
+ # environment to Development disables some logic inside MapTool)
+ "-Dsentry.dsn"
+ "-Dsentry.environment=Development"
+ ];
+
+ binName = pname;
+ rdnsName = "net.rptools.maptool";
+in
+stdenvNoCC.mkDerivation {
+ inherit pname version src meta;
+
+ dontUnpack = true;
+ dontBuild = true;
+ dontWrapGApps = true;
+
+ nativeBuildInputs = [
+ copyDesktopItems
+ libarchive
+ wrapGAppsHook
+ ];
+
+ desktopItems = [
+ (makeDesktopItem {
+ name = rdnsName;
+ desktopName = "MapTool";
+ icon = rdnsName;
+ exec = binName;
+ comment = meta.description;
+ categories = [ "Game" ];
+ })
+ ];
+
+ installPhase = ''
+ runHook preInstall
+
+ mkdir -p $out/bin
+ makeWrapper ${jre}/bin/java $out/bin/${binName} \
+ "''${gappsWrapperArgs[@]}" \
+ --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ ffmpeg ]} \
+ --add-flags '${lib.concatStringsSep " " jvmArgs} net.rptools.maptool.client.LaunchInstructions'
+
+ dest=$out/share/icons/hicolor/256x256/apps
+ mkdir -p "$dest"
+ ln -s ${icon} "$dest/${rdnsName}.png"
+
+ runHook postInstall
+ '';
+
+ passthru.updateScript = gitUpdater {
+ url = "${repoBase}.git";
+ ignoredVersions = "-";
+ };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 2178fd53afe1..8b0c380a81c2 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -36599,6 +36599,14 @@ with pkgs;
gtk = gtk2;
};
+ maptool = callPackage ../games/maptool {
+ # MapTool is fussy about which JRE it uses; OpenJDK will leave it hanging
+ # at launch in a class initialization deadlock. MapTool ships Temurin with
+ # their pre-built releases so we might as well use it too.
+ jre = temurin-bin-17;
+ openjfx = openjfx17;
+ };
+
mari0 = callPackage ../games/mari0 { };
manaplus = callPackage ../games/manaplus { stdenv = gcc11Stdenv; };