diff options
Diffstat (limited to 'archived/projt-launcher/nix/wrapper.nix')
| -rw-r--r-- | archived/projt-launcher/nix/wrapper.nix | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/archived/projt-launcher/nix/wrapper.nix b/archived/projt-launcher/nix/wrapper.nix new file mode 100644 index 0000000000..36a8f070ff --- /dev/null +++ b/archived/projt-launcher/nix/wrapper.nix @@ -0,0 +1,180 @@ +{ + addDriverRunpath, + alsa-lib, + atk, + at-spi2-atk, + cairo, + cups, + dbus, + expat, + fontconfig, + flite, + freetype, + gamemode, + gdk-pixbuf, + glfw3-minecraft, + jdk17, + jdk21, + jdk8, + kdePackages, + glib, + gtk3, + harfbuzz, + lib, + libGL, + libX11, + libXcomposite, + libXcursor, + libXdamage, + libXext, + libXfixes, + libXrandr, + libXxf86vm, + libxcb, + libxkbcommon, + libjack2, + libpulseaudio, + libusb1, + mesa-demos, + mesa, + nspr, + nss, + openal, + pango, + pciutils, + pipewire, + projtlauncher-unwrapped, + stdenv, + symlinkJoin, + udev, + vulkan-loader, + xorg, + xrandr, + + additionalLibs ? [ ], + additionalPrograms ? [ ], + controllerSupport ? stdenv.hostPlatform.isLinux, + gamemodeSupport ? stdenv.hostPlatform.isLinux, + jdks ? [ + jdk21 # need for newest Minecraft versions + jdk17 # need for old and new Minecraft versions + jdk8 # need for legacy Minecraft versions + ], + msaClientID ? null, + textToSpeechSupport ? stdenv.hostPlatform.isLinux, +}: + +assert lib.assertMsg ( + controllerSupport -> stdenv.hostPlatform.isLinux +) "controllerSupport only has an effect on Linux."; + +assert lib.assertMsg ( + textToSpeechSupport -> stdenv.hostPlatform.isLinux +) "textToSpeechSupport only has an effect on Linux."; + +let + projtlauncher' = projtlauncher-unwrapped.override { inherit msaClientID gamemodeSupport; }; +in + +symlinkJoin { + pname = "projtlauncher"; + inherit (projtlauncher') version; + + paths = [ projtlauncher' ]; + + nativeBuildInputs = [ kdePackages.wrapQtAppsHook ]; + + buildInputs = [ + kdePackages.qtbase + kdePackages.qtsvg + ] + ++ lib.optional ( + lib.versionAtLeast kdePackages.qtbase.version "6" && stdenv.hostPlatform.isLinux + ) kdePackages.qtwayland; + + postBuild = '' + wrapQtAppsHook + ''; + + qtWrapperArgs = + let + runtimeLibs = [ + (lib.getLib stdenv.cc.cc) + ## native versions + glfw3-minecraft + openal + + ## openal + alsa-lib + libjack2 + libpulseaudio + pipewire + + ## CEF + atk + at-spi2-atk + cairo + cups + dbus + expat + fontconfig + freetype + gdk-pixbuf + glib + gtk3 + harfbuzz + libxcb + libxkbcommon + mesa + nspr + nss + pango + + ## glfw + libGL + libX11 + libXcomposite + libXcursor + libXdamage + libXext + libXfixes + libXrandr + libXxf86vm + xorg.xcbutilcursor + + udev # oshi + + vulkan-loader # VulkanMod's lwjgl + ] + ++ lib.optional textToSpeechSupport flite + ++ lib.optional gamemodeSupport gamemode.lib + ++ lib.optional controllerSupport libusb1 + ++ additionalLibs; + + runtimePrograms = [ + mesa-demos + pciutils # need lspci + xrandr # needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128 + ] + ++ additionalPrograms; + + in + [ "--prefix PROJTLAUNCHER_JAVA_PATHS : ${lib.makeSearchPath "bin/java" jdks}" ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ + "--set LD_LIBRARY_PATH ${projtlauncher'}/lib/projtlauncher:${projtlauncher'}/lib:${addDriverRunpath.driverLink}/lib:${lib.makeLibraryPath runtimeLibs}" + "--prefix PATH : ${lib.makeBinPath runtimePrograms}" + ]; + + meta = { + inherit (projtlauncher'.meta) + description + longDescription + homepage + changelog + license + maintainers + mainProgram + platforms + ; + }; +} |
