about summary refs log tree commit diff
path: root/pkgs/tools/X11/primus/lib.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools/X11/primus/lib.nix')
-rw-r--r--pkgs/tools/X11/primus/lib.nix32
1 files changed, 24 insertions, 8 deletions
diff --git a/pkgs/tools/X11/primus/lib.nix b/pkgs/tools/X11/primus/lib.nix
index fccd01eaeadd..f3119a1a147b 100644
--- a/pkgs/tools/X11/primus/lib.nix
+++ b/pkgs/tools/X11/primus/lib.nix
@@ -1,10 +1,16 @@
-{ stdenv, fetchFromGitHub
-, xlibsWrapper, mesa
+{ stdenv, fetchFromGitHub, fetchpatch
+, libX11, mesa_noglu
 , nvidia_x11 ? null
-, libX11
+, libglvnd
 }:
 
-stdenv.mkDerivation {
+let
+  aPackage =
+    if nvidia_x11 == null then mesa_noglu
+    else if nvidia_x11.useGLVND then libglvnd
+    else nvidia_x11;
+
+in stdenv.mkDerivation {
   name = "primus-lib-2015-04-28";
 
   src = fetchFromGitHub {
@@ -14,18 +20,28 @@ stdenv.mkDerivation {
     sha256 = "118jm57ccawskb8vjq3a9dpa2gh72nxzvx2zk7zknpy0arrdznj1";
   };
 
-  buildInputs = [ libX11 mesa ];
+  patches = [
+    # Bump buffer size for long library paths.
+    (fetchpatch {
+      url = "https://github.com/abbradar/primus/commit/2f429e232581c556df4f4bf210aee8a0c99c60b7.patch";
+      sha256 = "1da6ynz7r7x98495i329sf821308j1rpy8prcdraqahz7p4c89nc";
+    })
+  ];
+
+  buildInputs = [ libX11 mesa_noglu ];
 
   makeFlags = [ "LIBDIR=$(out)/lib"
-                "PRIMUS_libGLa=${if nvidia_x11 == null then mesa else nvidia_x11}/lib/libGL.so"
-                "PRIMUS_libGLd=${mesa}/lib/libGL.so"
-                "PRIMUS_LOAD_GLOBAL=${mesa}/lib/libglapi.so"
+                "PRIMUS_libGLa=${aPackage}/lib/libGL.so"
+                "PRIMUS_libGLd=${mesa_noglu}/lib/libGL.so"
+                "PRIMUS_LOAD_GLOBAL=${mesa_noglu}/lib/libglapi.so"
               ];
 
   installPhase = ''
     ln -s $out/lib/libGL.so.1 $out/lib/libGL.so
   '';
 
+  passthru.glvnd = if nvidia_x11 != null && nvidia_x11.useGLVND then nvidia_x11 else null;
+
   meta = with stdenv.lib; {
     description = "Low-overhead client-side GPU offloading";
     homepage = "https://github.com/amonakov/primus";