Skip to content

Commit c917918

Browse files
authored
Merge pull request #122 from benneti/main
feat: more nixGL variants
2 parents 643e730 + 6c72028 commit c917918

File tree

1 file changed

+36
-30
lines changed

1 file changed

+36
-30
lines changed

Diff for: nixGL.nix

+36-30
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ nvidiaVersionFile ? null,
1515
enable32bits ? true
1616
, writeTextFile, shellcheck, pcre, runCommand, linuxPackages
1717
, fetchurl, lib, runtimeShell, bumblebee, libglvnd, vulkan-validation-layers
18-
, mesa, libvdpau-va-gl, intel-media-driver, vaapiIntel, pkgsi686Linux, driversi686Linux
18+
, mesa, libvdpau-va-gl, intel-media-driver, pkgsi686Linux, driversi686Linux
1919
, zlib, libdrm, xorg, wayland, gcc }:
2020

2121
let
@@ -36,6 +36,32 @@ let
3636
done
3737
'';
3838
};
39+
40+
writeNixGL = name: vadrivers: writeExecutable {
41+
inherit name;
42+
# add the 32 bits drivers if needed
43+
text = let
44+
mesa-drivers = [ mesa.drivers ]
45+
++ lib.optional enable32bits pkgsi686Linux.mesa.drivers;
46+
libvdpau = [ libvdpau-va-gl ]
47+
++ lib.optional enable32bits pkgsi686Linux.libvdpau-va-gl;
48+
glxindirect = runCommand "mesa_glxindirect" { } (''
49+
mkdir -p $out/lib
50+
ln -s ${mesa.drivers}/lib/libGLX_mesa.so.0 $out/lib/libGLX_indirect.so.0
51+
'');
52+
in ''
53+
#!${runtimeShell}
54+
export LIBGL_DRIVERS_PATH=${lib.makeSearchPathOutput "lib" "lib/dri" mesa-drivers}
55+
export LIBVA_DRIVERS_PATH=${lib.makeSearchPathOutput "out" "lib/dri" (mesa-drivers ++ vadrivers)}
56+
${''export __EGL_VENDOR_LIBRARY_FILENAMES=${mesa.drivers}/share/glvnd/egl_vendor.d/50_mesa.json${
57+
lib.optionalString enable32bits
58+
":${pkgsi686Linux.mesa.drivers}/share/glvnd/egl_vendor.d/50_mesa.json"
59+
}"''${__EGL_VENDOR_LIBRARY_FILENAMES:+:$__EGL_VENDOR_LIBRARY_FILENAMES}"''
60+
}
61+
export LD_LIBRARY_PATH=${lib.makeLibraryPath mesa-drivers}:${lib.makeSearchPathOutput "lib" "lib/vdpau" libvdpau}:${glxindirect}/lib:${lib.makeLibraryPath [libglvnd]}"''${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
62+
exec "$@"
63+
'';
64+
};
3965
top = rec {
4066
/*
4167
It contains the builder for different nvidia configuration, parametrized by
@@ -127,36 +153,14 @@ let
127153
nixVulkanNvidia = nixNvidiaWrapper "Vulkan";
128154
};
129155

130-
nixGLIntel = writeExecutable {
131-
name = "nixGLIntel";
132-
# add the 32 bits drivers if needed
133-
text = let
134-
mesa-drivers = [ mesa.drivers ]
135-
++ lib.optional enable32bits pkgsi686Linux.mesa.drivers;
136-
intel-driver = [ intel-media-driver vaapiIntel ]
137-
# Note: intel-media-driver is disabled for i686 until https://github.com/NixOS/nixpkgs/issues/140471 is fixed
138-
++ lib.optionals enable32bits [ /* pkgsi686Linux.intel-media-driver */ driversi686Linux.vaapiIntel ];
139-
libvdpau = [ libvdpau-va-gl ]
140-
++ lib.optional enable32bits pkgsi686Linux.libvdpau-va-gl;
141-
glxindirect = runCommand "mesa_glxindirect" { } (''
142-
mkdir -p $out/lib
143-
ln -s ${mesa.drivers}/lib/libGLX_mesa.so.0 $out/lib/libGLX_indirect.so.0
144-
'');
145-
in ''
146-
#!${runtimeShell}
147-
export LIBGL_DRIVERS_PATH=${lib.makeSearchPathOutput "lib" "lib/dri" mesa-drivers}
148-
export LIBVA_DRIVERS_PATH=${lib.makeSearchPathOutput "out" "lib/dri" intel-driver}
149-
${''export __EGL_VENDOR_LIBRARY_FILENAMES=${mesa.drivers}/share/glvnd/egl_vendor.d/50_mesa.json${
150-
lib.optionalString enable32bits
151-
":${pkgsi686Linux.mesa.drivers}/share/glvnd/egl_vendor.d/50_mesa.json"
152-
}"''${__EGL_VENDOR_LIBRARY_FILENAMES:+:$__EGL_VENDOR_LIBRARY_FILENAMES}"''
153-
}
154-
export LD_LIBRARY_PATH=${lib.makeLibraryPath mesa-drivers}:${lib.makeSearchPathOutput "lib" "lib/vdpau" libvdpau}:${glxindirect}/lib:${lib.makeLibraryPath [libglvnd]}"''${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
155-
exec "$@"
156-
'';
157-
};
158156

159-
nixVulkanIntel = writeExecutable {
157+
nixGLMesa = writeNixGL "nixGLMesa" [ ];
158+
159+
nixGLIntel = writeNixGL "nixGLIntel"
160+
([ intel-media-driver ]
161+
++ lib.optionals enable32bits [ pkgsi686Linux.intel-media-driver ]);
162+
163+
nixVulkanMesa = writeExecutable {
160164
name = "nixVulkanIntel";
161165
text = let
162166
# generate a file with the listing of all the icd files
@@ -194,6 +198,8 @@ let
194198
'';
195199
};
196200

201+
nixVulkanIntel = nixVulkanMesa;
202+
197203
nixGLCommon = nixGL:
198204
runCommand "nixGL" { } ''
199205
mkdir -p "$out/bin"

0 commit comments

Comments
 (0)