summary refs log tree commit diff
path: root/pkgs/os-specific
diff options
context:
space:
mode:
authorAmbroz Bizjak <abizjak.pro@gmail.com>2019-09-28 12:35:03 +0200
committerNikolay Amiantov <ab@fmap.me>2019-10-02 10:10:55 +0300
commit8aac337d71ae6b7964def0ca16c19c2b4f4f15a1 (patch)
tree4a9da5ba6dd0e6a7470e3257f34654595fadc800 /pkgs/os-specific
parent20e214bd23133f1cc9b1100aba69928807136928 (diff)
nvidia-x11: Make vulkan library path absolute for >= 435.
The original file contains just a library name, which does not work when LD_LIBRARY_PATH does not contain /run/opengl-driver/lib, as is the case in unstable NixOS.

Fixes https://github.com/NixOS/nixpkgs/issues/69264

(cherry picked from commit d156b2b619ba207e12c5ca3abfbfaace6dfe7ce1)
Diffstat (limited to 'pkgs/os-specific')
-rwxr-xr-xpkgs/os-specific/linux/nvidia-x11/builder.sh21
1 files changed, 15 insertions, 6 deletions
diff --git a/pkgs/os-specific/linux/nvidia-x11/builder.sh b/pkgs/os-specific/linux/nvidia-x11/builder.sh
index 2b1b37db344de..b4c6952d44d30 100755
--- a/pkgs/os-specific/linux/nvidia-x11/builder.sh
+++ b/pkgs/os-specific/linux/nvidia-x11/builder.sh
@@ -59,15 +59,24 @@ installPhase() {
         mv $i/lib/libvdpau* $i/lib/vdpau
 
         # Install ICDs, make absolute paths.
+        # Be careful not to modify any original files because this runs twice.
+
+        # OpenCL
         sed -E "s#(libnvidia-opencl)#$i/lib/\\1#" nvidia.icd > nvidia.icd.fixed
         install -Dm644 nvidia.icd.fixed $i/etc/OpenCL/vendors/nvidia.icd
-        if [ -e nvidia_icd.json.template ]; then
-            # template patching for version < 435
-            sed "s#__NV_VK_ICD__#$i/lib/libGLX_nvidia.so#" nvidia_icd.json.template > nvidia_icd.json
-        fi
-        if [ -e nvidia_icd.json ]; then
-            install -Dm644 nvidia_icd.json $i/share/vulkan/icd.d/nvidia.json
+
+        # Vulkan
+        if [ -e nvidia_icd.json.template ] || [ -e nvidia_icd.json ]; then
+            if [ -e nvidia_icd.json.template ]; then
+                # template patching for version < 435
+                sed "s#__NV_VK_ICD__#$i/lib/libGLX_nvidia.so#" nvidia_icd.json.template > nvidia_icd.json.fixed
+            else
+                sed -E "s#(libGLX_nvidia)#$i/lib/\\1#" nvidia_icd.json > nvidia_icd.json.fixed
+            fi
+            install -Dm644 nvidia_icd.json.fixed $i/share/vulkan/icd.d/nvidia.json
         fi
+
+        # EGL
         if [ "$useGLVND" = "1" ]; then
             sed -E "s#(libEGL_nvidia)#$i/lib/\\1#" 10_nvidia.json > 10_nvidia.json.fixed
             install -Dm644 10_nvidia.json.fixed $i/share/glvnd/egl_vendor.d/nvidia.json