linuxPackages.nvidia_x11: refactor, build more from source
* Use libglvnd; * Compile nvidia-settings, nvidia-persistenced from source; * Generalize builder.
This commit is contained in:
@@ -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}
|
||||
|
||||
@@ -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";
|
||||
|
||||
Reference in New Issue
Block a user