diff options
author | Ryan Hendrickson <ryan.hendrickson@alum.mit.edu> | 2023-05-18 21:31:03 -0400 |
---|---|---|
committer | Ryan Hendrickson <ryan.hendrickson@alum.mit.edu> | 2023-05-18 21:31:03 -0400 |
commit | 45eb557afafd24a5d938e753ba1c6f8edee978a7 (patch) | |
tree | 93c1573858be4e82d6fe6c36db9377de5ea48b9b /pkgs/games/maptool/default.nix | |
parent | 1ec04700ab872c6b799fe7f7bc43db471ce4e8ae (diff) |
maptool: init at 1.13.0
Diffstat (limited to 'pkgs/games/maptool/default.nix')
-rw-r--r-- | pkgs/games/maptool/default.nix | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/pkgs/games/maptool/default.nix b/pkgs/games/maptool/default.nix new file mode 100644 index 0000000000000..53d8d89d69206 --- /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 = "-"; + }; +} |