{ lib , stdenv , symlinkJoin , prismlauncher-unwrapped , wrapQtAppsHook , addOpenGLRunpath , qtbase # needed for wrapQtAppsHook , qtsvg , qtwayland , xorg , libpulseaudio , libGL , glfw , openal , jdk8 , jdk17 , gamemode , flite , mesa-demos , udev , libusb1 , msaClientID ? null , gamemodeSupport ? stdenv.isLinux , textToSpeechSupport ? stdenv.isLinux , controllerSupport ? stdenv.isLinux , jdks ? [ jdk17 jdk8 ] , additionalLibs ? [ ] , additionalPrograms ? [ ] }: let prismlauncherFinal = prismlauncher-unwrapped.override { inherit msaClientID gamemodeSupport; }; in symlinkJoin { name = "prismlauncher-${prismlauncherFinal.version}"; paths = [ prismlauncherFinal ]; nativeBuildInputs = [ wrapQtAppsHook ]; buildInputs = [ qtbase qtsvg ] ++ lib.optional (lib.versionAtLeast qtbase.version "6" && stdenv.isLinux) qtwayland; postBuild = '' wrapQtAppsHook ''; qtWrapperArgs = let runtimeLibs = (with xorg; [ libX11 libXext libXcursor libXrandr libXxf86vm ]) ++ [ # lwjgl libpulseaudio libGL glfw openal stdenv.cc.cc.lib # oshi udev ] ++ lib.optional gamemodeSupport gamemode.lib ++ lib.optional textToSpeechSupport flite ++ lib.optional controllerSupport libusb1 ++ additionalLibs; runtimePrograms = [ xorg.xrandr mesa-demos # need glxinfo ] ++ additionalPrograms; in [ "--prefix PRISMLAUNCHER_JAVA_PATHS : ${lib.makeSearchPath "bin/java" jdks}" ] ++ lib.optionals stdenv.isLinux [ "--set LD_LIBRARY_PATH ${addOpenGLRunpath.driverLink}/lib:${lib.makeLibraryPath runtimeLibs}" # xorg.xrandr needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128 "--prefix PATH : ${lib.makeBinPath runtimePrograms}" ]; inherit (prismlauncherFinal) meta; }