aboutsummaryrefslogtreecommitdiff
path: root/nix/pkg/wrapper.nix
blob: 8d160143d370031ef4ea5cbd518bf9bd713c69ae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
{
  lib,
  stdenv,
  symlinkJoin,
  prismlauncher-unwrapped,
  wrapQtAppsHook,
  qtbase, # needed for wrapQtAppsHook
  qtsvg,
  qtwayland,
  xorg,
  libpulseaudio,
  libGL,
  glfw,
  openal,
  jdk8,
  jdk17,
  gamemode,
  flite,
  mesa-demos,
  udev,
  msaClientID ? null,
  gamemodeSupport ? stdenv.isLinux,
  textToSpeechSupport ? 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
        ++ 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 /run/opengl-driver/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;
  }