Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 139 lines 3.6 kB view raw
1{ 2 lib, 3 copyDesktopItems, 4 fetchurl, 5 ffmpeg, 6 gitUpdater, 7 jre, 8 libarchive, 9 makeDesktopItem, 10 openjfx, 11 stdenvNoCC, 12 wrapGAppsHook3, 13}: 14let 15 pname = "maptool"; 16 version = "1.17.1"; 17 repoBase = "https://github.com/RPTools/maptool"; 18 src = fetchurl { 19 url = "${repoBase}/releases/download/${version}/maptool-${version}-x86_64.pkg.tar.zst"; 20 hash = "sha256-yPuZUPRP0O+5Grj53xteZovowuFxOo4q6qL3mnjgIu0="; 21 }; 22 23 meta = with lib; { 24 description = "Virtual Tabletop for playing roleplaying games with remote players or face to face"; 25 mainProgram = "maptool"; 26 homepage = "https://www.rptools.net/toolbox/maptool/"; 27 sourceProvenance = with sourceTypes; [ 28 binaryBytecode 29 binaryNativeCode 30 ]; 31 license = licenses.agpl3Plus; 32 maintainers = with maintainers; [ rhendric ]; 33 platforms = [ "x86_64-linux" ]; 34 }; 35 36 javafxModules = [ 37 "base" 38 "controls" 39 "media" 40 "swing" 41 "web" 42 "fxml" 43 "graphics" 44 ]; 45 46 appClasspath = "share/${pname}"; 47 48 classpath = 49 lib.concatMap (mod: [ 50 "${openjfx}/modules_src/javafx.${mod}/module-info.java" 51 "${openjfx}/modules/javafx.${mod}" 52 "${openjfx}/modules_libs/javafx.${mod}" 53 ]) javafxModules 54 ++ [ "$out/${appClasspath}/*" ]; 55 56 jvmArgs = [ 57 "-cp" 58 (lib.concatStringsSep ":" classpath) 59 "-Xss8M" 60 "-Dsun.java2d.d3d=false" 61 "-Dfile.encoding=UTF-8" 62 "-Dpolyglot.engine.WarnInterpreterOnly=false" 63 "-XX:+ShowCodeDetailsInExceptionMessages" 64 "--add-opens=java.desktop/java.awt=ALL-UNNAMED" 65 "--add-opens=java.desktop/java.awt.geom=ALL-UNNAMED" 66 "--add-opens=java.desktop/sun.awt.geom=ALL-UNNAMED" 67 "--add-opens=java.base/java.util=ALL-UNNAMED" 68 "--add-opens=javafx.web/javafx.scene.web=ALL-UNNAMED" 69 "--add-opens=javafx.web/com.sun.webkit=ALL-UNNAMED" 70 "--add-opens=javafx.web/com.sun.webkit.dom=ALL-UNNAMED" 71 "--add-opens=java.desktop/javax.swing=ALL-UNNAMED" 72 "--add-opens=java.desktop/sun.awt.shell=ALL-UNNAMED" 73 "--add-opens=java.desktop/com.sun.java.swing.plaf.windows=ALL-UNNAMED" 74 75 # disable telemetry (the empty DSN disables the Sentry library, setting the 76 # environment to Development disables some logic inside MapTool) 77 "-Dsentry.dsn" 78 "-Dsentry.environment=Development" 79 ]; 80 81 binName = pname; 82 rdnsName = "net.rptools.maptool"; 83in 84stdenvNoCC.mkDerivation { 85 inherit 86 pname 87 version 88 src 89 meta 90 ; 91 92 dontUnpack = true; 93 dontConfigure = true; 94 dontBuild = true; 95 dontWrapGApps = true; 96 97 nativeBuildInputs = [ 98 copyDesktopItems 99 libarchive 100 wrapGAppsHook3 101 ]; 102 103 desktopItems = [ 104 (makeDesktopItem { 105 name = rdnsName; 106 desktopName = "MapTool"; 107 icon = rdnsName; 108 exec = binName; 109 comment = meta.description; 110 categories = [ "Game" ]; 111 }) 112 ]; 113 114 installPhase = '' 115 runHook preInstall 116 117 dest=$out/${appClasspath} 118 install -dm755 "$dest" 119 bsdtar -xf "$src" -C "$dest" --strip-components 4 opt/maptool/lib/app/{'*.jar',readme} 120 121 dest=$out/share/icons/hicolor/256x256/apps 122 install -dm755 "$dest" 123 bsdtar -xOf "$src" opt/maptool/lib/MapTool.png > "$dest"/${rdnsName}.png 124 125 dest=$out/bin 126 install -dm755 "$dest" 127 makeWrapper ${jre}/bin/java "$dest"/${binName} \ 128 "''${gappsWrapperArgs[@]}" \ 129 --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ ffmpeg ]} \ 130 --add-flags "${lib.concatStringsSep " " jvmArgs} net.rptools.maptool.client.LaunchInstructions" 131 132 runHook postInstall 133 ''; 134 135 passthru.updateScript = gitUpdater { 136 url = "${repoBase}.git"; 137 ignoredVersions = "-"; 138 }; 139}