summary refs log tree commit diff
path: root/pkgs/os-specific/linux/nvidia-x11
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/os-specific/linux/nvidia-x11')
-rwxr-xr-xpkgs/os-specific/linux/nvidia-x11/builder.sh55
-rw-r--r--pkgs/os-specific/linux/nvidia-x11/default.nix7
2 files changed, 34 insertions, 28 deletions
diff --git a/pkgs/os-specific/linux/nvidia-x11/builder.sh b/pkgs/os-specific/linux/nvidia-x11/builder.sh
index 5d6647d1ee08..314b1082dfc2 100755
--- a/pkgs/os-specific/linux/nvidia-x11/builder.sh
+++ b/pkgs/os-specific/linux/nvidia-x11/builder.sh
@@ -29,6 +29,29 @@ buildPhase() {
 
 
 installPhase() {
+    # Install libGL and friends.
+    mkdir -p "$out/lib/vendors"
+    cp -p nvidia.icd $out/lib/vendors/
+
+    cp -prd *.so.* tls "$out/lib/"
+    rm "$out"/lib/lib{glx,nvidia-wfb}.so.* # handled separately
+
+    for libname in `find "$out/lib/" -name '*.so.*'`
+    do
+      # I'm lazy to differentiate needed libs per-library, as the closure is the same.
+      # Unfortunately --shrink-rpath would strip too much.
+      patchelf --set-rpath "$out/lib:$allLibPath" "$libname"
+
+      libname_short=`echo -n "$libname" | sed 's/so\..*/so/'`
+      ln -srnf "$libname" "$libname_short"
+      ln -srnf "$libname" "$libname_short.1"
+    done
+
+    #patchelf --set-rpath $out/lib:$glPath $out/lib/libGL.so.*.*
+    #patchelf --set-rpath $out/lib:$glPath $out/lib/libvdpau_nvidia.so.*.*
+    #patchelf --set-rpath $cudaPath $out/lib/libcuda.so.*.*
+    #patchelf --set-rpath $openclPath $out/lib/libnvidia-opencl.so.*.*
+
 
     if test -z "$libsOnly"; then
         # Install the kernel module.
@@ -52,9 +75,11 @@ installPhase() {
         for i in nvidia-settings nvidia-smi; do
             cp $i $out/bin/$i
             patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
-                --set-rpath $out/lib:$programPath:$glPath $out/bin/$i
+                --set-rpath $out/lib:$glPath $out/bin/$i
         done
 
+        patchelf --set-rpath $glPath:$gtk3Path $out/lib/libnvidia-gtk3.so.*.*
+
         # Header files etc.
         mkdir -p $out/include/nvidia
         cp -p *.h $out/include/nvidia
@@ -76,31 +101,11 @@ installPhase() {
 
         # Test a bit.
         $out/bin/nvidia-settings --version
+    else
+        rm $out/lib/libnvidia-gtk3.*
     fi
-
-
-    # Install libGL and friends.
-    mkdir -p "$out/lib/vendors"
-    cp -p nvidia.icd $out/lib/vendors/
-
-    cp -prd *.so.* tls "$out/lib/"
-    rm "$out"/lib/lib{glx,nvidia-wfb}.so.* # handled separately
-
-    for libname in `find "$out/lib/" -name '*.so.*'`
-    do
-      # I'm lazy to differentiate needed libs per-library, as the closure is the same.
-      # Unfortunately --shrink-rpath would strip too much.
-      patchelf --set-rpath "$out/lib:$allLibPath" "$libname"
-
-      libname_short=`echo -n "$libname" | sed 's/so\..*/so/'`
-      ln -srnf "$libname" "$libname_short"
-      ln -srnf "$libname" "$libname_short.1"
-    done
-
-    #patchelf --set-rpath $out/lib:$glPath $out/lib/libGL.so.*.*
-    #patchelf --set-rpath $out/lib:$glPath $out/lib/libvdpau_nvidia.so.*.*
-    #patchelf --set-rpath $cudaPath $out/lib/libcuda.so.*.*
-    #patchelf --set-rpath $openclPath $out/lib/libnvidia-opencl.so.*.*
+    # for simplicity and dependency reduction, don't support the gtk2 interface
+    rm $out/lib/libnvidia-gtk2.*
 }
 
 
diff --git a/pkgs/os-specific/linux/nvidia-x11/default.nix b/pkgs/os-specific/linux/nvidia-x11/default.nix
index f8b6327a6545..5dd8eb5450cf 100644
--- a/pkgs/os-specific/linux/nvidia-x11/default.nix
+++ b/pkgs/os-specific/linux/nvidia-x11/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, kernel ? null, xlibs, zlib, perl
-, gtk, atk, pango, glib, gdk_pixbuf
+, gtk3, atk, pango, glib, gdk_pixbuf, cairo
 , # Whether to build the libraries only (i.e. not the kernel module or
   # nvidia-settings).  Used to support 32-bit binaries on 64-bit
   # Linux.
@@ -46,8 +46,9 @@ stdenv.mkDerivation {
   openclPath  = makeLibraryPath [zlib];
   allLibPath  = makeLibraryPath [xlibs.libXext xlibs.libX11 xlibs.libXrandr zlib stdenv.cc.cc];
 
-  programPath = optionalString (!libsOnly) (makeLibraryPath
-    [ gtk atk pango glib gdk_pixbuf xlibs.libXv ] );
+  # we don't support the gtk2 version
+  gtk3Path = optionalString (!libsOnly) (makeLibraryPath
+    [ gtk3 atk pango glib gdk_pixbuf cairo ] );
 
   buildInputs = [ perl ];