summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/tools/X11/primus/builder.sh12
-rw-r--r--pkgs/tools/X11/primus/default.nix33
-rw-r--r--pkgs/tools/X11/primus/lib.nix35
-rw-r--r--pkgs/top-level/all-packages.nix13
4 files changed, 41 insertions, 52 deletions
diff --git a/pkgs/tools/X11/primus/builder.sh b/pkgs/tools/X11/primus/builder.sh
deleted file mode 100644
index 3c6b6afdc09f..000000000000
--- a/pkgs/tools/X11/primus/builder.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-source $stdenv/setup
-
-cp -r $src src
-cd src
-
-export LIBDIR=$out/lib
-export PRIMUS_libGLa=$nvidia/lib/libGL.so
-export PRIMUS_libGLd=$mesa/lib/libGL.so
-export PRIMUS_LOAD_GLOBAL=$mesa/lib/libglapi.so
-
-make
-ln -s $LIBDIR/libGL.so.1 $LIBDIR/libGL.so
diff --git a/pkgs/tools/X11/primus/default.nix b/pkgs/tools/X11/primus/default.nix
index 1aa7909a43d6..f0a971dde18f 100644
--- a/pkgs/tools/X11/primus/default.nix
+++ b/pkgs/tools/X11/primus/default.nix
@@ -5,31 +5,18 @@
 # Other distributions do the same.
 { stdenv
 , primusLib
-, writeScript
+, writeScriptBin
 , primusLib_i686 ? null
+, useNvidia ? true
 }:
-with stdenv.lib;
+
 let
-  version = "1.0.0748176";
-  ldPath = makeLibraryPath ([primusLib] ++ optional (primusLib_i686 != null) primusLib_i686);
-  primusrun = writeScript "primusrun"
-''
+  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);
+
+in writeScriptBin "primusrun" ''
+  #!${stdenv.shell}
   export LD_LIBRARY_PATH=${ldPath}:$LD_LIBRARY_PATH
   exec "$@"
-'';
-in
-stdenv.mkDerivation {
-  name = "primus-${version}";
-  builder = writeScript "builder"
-  ''
-  source $stdenv/setup
-  mkdir -p $out/bin
-  cp ${primusrun} $out/bin/primusrun
-  '';
-
-  meta = {
-    homepage = https://github.com/amonakov/primus;
-    description = "Faster OpenGL offloading for Bumblebee";
-    maintainers = with maintainers; [ coconnor ];
-  };
-}
+''
diff --git a/pkgs/tools/X11/primus/lib.nix b/pkgs/tools/X11/primus/lib.nix
index 96a4ac16c9b1..ce8059331092 100644
--- a/pkgs/tools/X11/primus/lib.nix
+++ b/pkgs/tools/X11/primus/lib.nix
@@ -1,20 +1,35 @@
 { stdenv, fetchgit
 , xlibsWrapper, mesa
-, nvidia
+, nvidia_x11 ? null
+, libX11
 }:
-let
-  version = "1.0.0748176";
-in
+
 stdenv.mkDerivation {
-  name = "primus-lib-${version}";
+  name = "primus-lib-20151204";
+
   src = fetchgit {
     url = git://github.com/amonakov/primus.git;
-    rev = "074817614c014e3a99259388cb18fd54648b659a";
-    sha256 = "0mrh432md6zrm16avxyk57mgszrqpgwdjahspchvlaccqxp3x82v";
+    rev = "d1afbf6fce2778c0751eddf19db9882e04f18bfd";
+    sha256 = "8f095b5e2030cdb155a42a49873832843c1e4dc3087a6fb94d198de982609923";
   };
 
-  inherit nvidia mesa;
+  buildInputs = [ libX11 mesa ];
+
+  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"
+              ];
 
-  buildInputs = [ xlibsWrapper mesa ];
-  builder = ./builder.sh;
+  installPhase = ''
+    ln -s $out/lib/libGL.so.1 $out/lib/libGL.so
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Low-overhead client-side GPU offloading";
+    homepage = https://github.com/amonakov/primus;
+    platforms = platforms.linux;
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ abbradar ];
+  };
 }
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index ffeb3dd4dc0e..b5932c0d6e7c 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -13387,15 +13387,14 @@ let
 
   virtualgl = callPackage ../tools/X11/virtualgl { };
 
-  primus = callPackage ../tools/X11/primus {
-    primusLib = callPackage ../tools/X11/primus/lib.nix {
-      nvidia = linuxPackages.nvidia_x11;
-    };
 
+  primusLib = callPackage ../tools/X11/primus/lib.nix {
+    nvidia_x11 = linuxPackages.nvidia_x11.override { libsOnly = true; };
+  };
+
+  primus = callPackage ../tools/X11/primus {
     primusLib_i686 = if system == "x86_64-linux"
-      then callPackage_i686 ../tools/X11/primus/lib.nix {
-             nvidia = pkgsi686Linux.linuxPackages.nvidia_x11.override { libsOnly = true; };
-           }
+      then pkgsi686Linux.primusLib
       else null;
   };