diff options
Diffstat (limited to 'packages/nix/polymc/default.nix')
-rw-r--r-- | packages/nix/polymc/default.nix | 102 |
1 files changed, 66 insertions, 36 deletions
diff --git a/packages/nix/polymc/default.nix b/packages/nix/polymc/default.nix index 5f1a0f27..4f80ff34 100644 --- a/packages/nix/polymc/default.nix +++ b/packages/nix/polymc/default.nix @@ -1,49 +1,79 @@ -{ lib, mkDerivation, fetchFromGitHub, cmake, jdk8, jdk, zlib, file, makeWrapper, xorg, libpulseaudio, qtbase, libGL, msaClientID ? "" }: +{ lib +, mkDerivation +, fetchFromGitHub +, makeDesktopItem +, substituteAll +, fetchpatch +, cmake +, ninja +, jdk8 +, jdk +, zlib +, file +, makeWrapper +, xorg +, libpulseaudio +, qtbase +, libGL +# submodules +, self +, submoduleNbt +, submoduleQuazip +}: let - libpath = with xorg; lib.makeLibraryPath [ libX11 libXext libXcursor libXrandr libXxf86vm libpulseaudio libGL ]; -in + gameLibraryPath = with xorg; lib.makeLibraryPath [ + libX11 + libXext + libXcursor + libXrandr + libXxf86vm + libpulseaudio + libGL + ]; +in + mkDerivation rec { pname = "polymc"; - version = "1.0.4"; - src = fetchFromGitHub { - owner = "PolyMC"; - repo = "PolyMC"; - rev = "${version}"; - sha256 = "sha256-8aya0KfV9F+i2qBpweWcR9hwyTSQkqn2wHdtkCEeNvk="; - fetchSubmodules = true; - }; - nativeBuildInputs = [ cmake file makeWrapper ]; - buildInputs = [ qtbase jdk8 zlib ]; + version = "nightly"; - patches = [ ./0001-pick-latest-java-first.patch ]; + src = lib.cleanSource self; - postPatch = '' - # hardcode jdk paths - substituteInPlace launcher/java/JavaUtils.cpp \ - --replace 'scanJavaDir("/usr/lib/jvm")' 'javas.append("${jdk}/lib/openjdk/bin/java")' \ - --replace 'scanJavaDir("/usr/lib32/jvm")' 'javas.append("${jdk8}/lib/openjdk/bin/java")' + nativeBuildInputs = [ cmake ninja file makeWrapper ]; + buildInputs = [ qtbase jdk8 zlib ]; + + postUnpack = '' + rm -rf source/libraries/{libnbtplusplus,quazip} + mkdir source/libraries/{libnbtplusplus,quazip} + cp -a ${submoduleNbt}/* source/libraries/libnbtplusplus + cp -a ${submoduleQuazip}/* source/libraries/quazip + chmod a+r+w source/libraries/{libnbtplusplus,quazip}/* ''; - cmakeFlags = [ "-DLauncher_LAYOUT=lin-system" ]; + cmakeFlags = [ + "-GNinja" + "-DLauncher_LAYOUT=lin-system" + ]; + + desktopItem = makeDesktopItem { + name = "polymc"; + exec = "polymc"; + icon = "polymc"; + desktopName = "PolyMC"; + genericName = "Minecraft Launcher"; + comment = "A custom launcher for Minecraft"; + categories = "Game;"; + extraEntries = '' + Keywords=game;Minecraft; + ''; + }; postInstall = '' + install -Dm644 ../launcher/resources/multimc/scalable/launcher.svg $out/share/pixmaps/multimc.svg + install -Dm755 ${desktopItem}/share/applications/polymc.desktop -t $out/share/applications # xorg.xrandr needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128 wrapProgram $out/bin/polymc \ - --set GAME_LIBRARY_PATH /run/opengl-driver/lib:${libpath} \ - --prefix PATH : ${lib.makeBinPath [ xorg.xrandr ]} - - substituteInPlace $out/share/applications/org.polymc.PolyMC.desktop --replace 'Exec=' 'Exec=${placeholder "out"}/bin/polymc' + --set GAME_LIBRARY_PATH /run/opengl-driver/lib:${gameLibraryPath} \ + --prefix PATH : ${lib.makeBinPath [ xorg.xrandr jdk ]} ''; - - meta = with lib; { - homepage = "https://github.com/PolyMC/PolyMC"; - description = "A free, open source launcher for Minecraft"; - longDescription = '' - Allows you to have multiple, separate instances of Minecraft (each with their own mods, texture packs, saves, etc) and helps you manage them and their associated options with a simple interface. - ''; - platforms = platforms.linux; - license = licenses.gpl3; - maintainers = with maintainers; [ cidkid ]; - }; -}
\ No newline at end of file +} |