diff --git a/pkgs/games/prismlauncher/default.nix b/pkgs/games/prismlauncher/default.nix index 617dcc547473..58d4e4adfa81 100644 --- a/pkgs/games/prismlauncher/default.nix +++ b/pkgs/games/prismlauncher/default.nix @@ -3,29 +3,17 @@ , fetchFromGitHub , cmake , ninja -, jdk8 , jdk17 , zlib -, file -, wrapQtAppsHook -, xorg -, libpulseaudio , qtbase -, qtsvg -, qtwayland -, libGL , quazip -, glfw -, openal , extra-cmake-modules , tomlplusplus , ghc_filesystem -, msaClientID ? "" -, jdks ? [ jdk17 jdk8 ] -, gamemodeSupport ? true , gamemode +, msaClientID ? "" +, gamemodeSupport ? true }: - let libnbtplusplus = fetchFromGitHub { owner = "PrismLauncher"; @@ -34,9 +22,8 @@ let sha256 = "sha256-TvVOjkUobYJD9itQYueELJX3wmecvEdCbJ0FinW2mL4="; }; in - stdenv.mkDerivation rec { - pname = "prismlauncher"; + pname = "prismlauncher-unwrapped"; version = "6.3"; src = fetchFromGitHub { @@ -46,17 +33,14 @@ stdenv.mkDerivation rec { sha256 = "sha256-7tptHKWkbdxTn6VIPxXE1K3opKRiUW2zv9r6J05dcS8="; }; - nativeBuildInputs = [ extra-cmake-modules cmake file jdk17 ninja wrapQtAppsHook ]; + nativeBuildInputs = [ extra-cmake-modules cmake jdk17 ninja ]; buildInputs = [ qtbase - qtsvg zlib quazip ghc_filesystem tomlplusplus - ] - ++ lib.optional (lib.versionAtLeast qtbase.version "6") qtwayland - ++ lib.optional gamemodeSupport gamemode.dev; + ] ++ lib.optional gamemodeSupport gamemode; cmakeFlags = lib.optionals (msaClientID != "") [ "-DLauncher_MSA_CLIENT_ID=${msaClientID}" ] ++ lib.optionals (lib.versionAtLeast qtbase.version "6") [ "-DLauncher_QT_VERSION_MAJOR=6" ]; @@ -69,28 +53,7 @@ stdenv.mkDerivation rec { chown -R $USER: source/libraries/libnbtplusplus ''; - qtWrapperArgs = - let - libpath = with xorg; - lib.makeLibraryPath ([ - libX11 - libXext - libXcursor - libXrandr - libXxf86vm - libpulseaudio - libGL - glfw - openal - stdenv.cc.cc.lib - ] ++ lib.optional gamemodeSupport gamemode.lib); - in - [ - "--set LD_LIBRARY_PATH /run/opengl-driver/lib:${libpath}" - "--prefix PRISMLAUNCHER_JAVA_PATHS : ${lib.makeSearchPath "bin/java" jdks}" - # xorg.xrandr needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128 - "--prefix PATH : ${lib.makeBinPath [xorg.xrandr]}" - ]; + dontWrapQtApps = true; meta = with lib; { homepage = "https://prismlauncher.org/"; diff --git a/pkgs/games/prismlauncher/wrapper.nix b/pkgs/games/prismlauncher/wrapper.nix new file mode 100644 index 000000000000..38480961f135 --- /dev/null +++ b/pkgs/games/prismlauncher/wrapper.nix @@ -0,0 +1,74 @@ +{ lib +, stdenv +, symlinkJoin +, prismlauncher-unwrapped +, wrapQtAppsHook +, qtbase # needed for wrapQtAppsHook +, qtsvg +, qtwayland +, xorg +, libpulseaudio +, libGL +, glfw +, openal +, jdk8 +, jdk17 +, jdks ? [ jdk17 jdk8 ] +, gamemode +, gamemodeSupport ? true +, additionalLibs ? [ ] +}: +let + prismlauncherFinal = prismlauncher-unwrapped.override { + inherit gamemodeSupport; + inherit gamemode; + }; +in +symlinkJoin { + name = "prismlauncher-${prismlauncherFinal.version}"; + + paths = [ prismlauncherFinal ]; + + nativeBuildInputs = [ + wrapQtAppsHook + ]; + + buildInputs = [ + qtbase + qtsvg + ] + ++ lib.optional (lib.versionAtLeast qtbase.version "6") qtwayland; + + postBuild = '' + wrapQtAppsHook + ''; + + qtWrapperArgs = + let + libs = (with xorg; [ + libX11 + libXext + libXcursor + libXrandr + libXxf86vm + ]) + ++ [ + libpulseaudio + libGL + glfw + openal + stdenv.cc.cc.lib + ] + ++ lib.optional gamemodeSupport gamemode.lib + ++ additionalLibs; + + in + [ + "--set LD_LIBRARY_PATH /run/opengl-driver/lib:${lib.makeLibraryPath libs}" + "--prefix PRISMLAUNCHER_JAVA_PATHS : ${lib.makeSearchPath "bin/java" jdks}" + # xorg.xrandr needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128 + "--prefix PATH : ${lib.makeBinPath [xorg.xrandr]}" + ]; + + inherit (prismlauncherFinal) meta; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 4a252b887935..60c0e7ceab47 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -36527,9 +36527,13 @@ with pkgs; principia = callPackage ../games/principia { }; - prismlauncher-qt5 = libsForQt5.callPackage ../games/prismlauncher { }; + prismlauncher-qt5-unwrapped = libsForQt5.callPackage ../games/prismlauncher { }; - prismlauncher = qt6Packages.callPackage ../games/prismlauncher { }; + prismlauncher-qt5 = libsForQt5.callPackage ../games/prismlauncher/wrapper.nix { prismlauncher-unwrapped = prismlauncher-qt5-unwrapped; }; + + prismlauncher-unwrapped = qt6Packages.callPackage ../games/prismlauncher { }; + + prismlauncher = qt6Packages.callPackage ../games/prismlauncher/wrapper.nix { }; pong3d = callPackage ../games/pong3d { };