summary refs log tree commit diff
path: root/pkgs/tools/X11/primus
diff options
context:
space:
mode:
authorNikolay Amiantov <ab@fmap.me>2017-01-30 00:29:39 +0300
committerNikolay Amiantov <ab@fmap.me>2017-02-08 16:57:46 +0300
commit2fd2fcf54d6453a70564bfbf1c8d4fdfb5f9f079 (patch)
tree6de8a1be9ead1d441b9cd1a6b84aa75065d9935d /pkgs/tools/X11/primus
parent750e7ba0d958a08cdef16a2147263586a55a3e4d (diff)
downloadnixpkgs-2fd2fcf54d6453a70564bfbf1c8d4fdfb5f9f079.tar
nixpkgs-2fd2fcf54d6453a70564bfbf1c8d4fdfb5f9f079.tar.gz
nixpkgs-2fd2fcf54d6453a70564bfbf1c8d4fdfb5f9f079.tar.bz2
nixpkgs-2fd2fcf54d6453a70564bfbf1c8d4fdfb5f9f079.tar.lz
nixpkgs-2fd2fcf54d6453a70564bfbf1c8d4fdfb5f9f079.tar.xz
nixpkgs-2fd2fcf54d6453a70564bfbf1c8d4fdfb5f9f079.tar.zst
nixpkgs-2fd2fcf54d6453a70564bfbf1c8d4fdfb5f9f079.zip
linuxPackages.nvidia_x11: refactor, build more from source
* Use libglvnd;
* Compile nvidia-settings, nvidia-persistenced from source;
* Generalize builder.
Diffstat (limited to 'pkgs/tools/X11/primus')
-rw-r--r--pkgs/tools/X11/primus/default.nix4
-rw-r--r--pkgs/tools/X11/primus/lib.nix22
2 files changed, 18 insertions, 8 deletions
diff --git a/pkgs/tools/X11/primus/default.nix b/pkgs/tools/X11/primus/default.nix
index 88589a05878..229e228e405 100644
--- a/pkgs/tools/X11/primus/default.nix
+++ b/pkgs/tools/X11/primus/default.nix
@@ -5,6 +5,8 @@
 # Other distributions do the same.
 { stdenv
 , stdenv_i686
+, lib
+, bumblebee
 , primusLib
 , writeScriptBin
 , primusLib_i686 ? null
@@ -18,7 +20,7 @@ let
 
   primus = if useNvidia then primusLib_ else primusLib_.override { nvidia_x11 = null; };
   primus_i686 = if useNvidia then primusLib_i686_ else primusLib_i686_.override { nvidia_x11 = null; };
-  ldPath = stdenv.lib.makeLibraryPath ([primus] ++ stdenv.lib.optional (primusLib_i686 != null) primus_i686);
+  ldPath = lib.makeLibraryPath ([ primus primus.glvnd ] ++ lib.optionals (primusLib_i686 != null) [ primus_i686 primus_i686.glvnd ]);
 
 in writeScriptBin "primusrun" ''
   #!${stdenv.shell}
diff --git a/pkgs/tools/X11/primus/lib.nix b/pkgs/tools/X11/primus/lib.nix
index fccd01eaead..d30377d0e18 100644
--- a/pkgs/tools/X11/primus/lib.nix
+++ b/pkgs/tools/X11/primus/lib.nix
@@ -1,10 +1,16 @@
 { stdenv, fetchFromGitHub
-, xlibsWrapper, mesa
+, 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,20 @@ stdenv.mkDerivation {
     sha256 = "118jm57ccawskb8vjq3a9dpa2gh72nxzvx2zk7zknpy0arrdznj1";
   };
 
-  buildInputs = [ libX11 mesa ];
+  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";