linuxPackages.nvidia_x11: refactor, build more from source

* Use libglvnd;
* Compile nvidia-settings, nvidia-persistenced from source;
* Generalize builder.
This commit is contained in:
Nikolay Amiantov
2017-02-08 16:57:46 +03:00
parent 750e7ba0d9
commit 2fd2fcf54d
17 changed files with 306 additions and 576 deletions
+7 -3
View File
@@ -19,12 +19,13 @@
{ stdenv, lib, fetchurl, fetchpatch, pkgconfig, help2man, makeWrapper
, glib, libbsd
, libX11, libXext, xorgserver, xkbcomp, kmod, xf86videonouveau
, nvidia_x11, virtualgl, primusLib
, nvidia_x11, virtualgl, libglvnd, primusLib
, automake111x, autoconf
# The below should only be non-null in a x86_64 system. On a i686
# system the above nvidia_x11 and virtualgl will be the i686 packages.
# TODO: Confusing. Perhaps use "SubArch" instead of i686?
, nvidia_x11_i686 ? null
, libglvnd_i686 ? null
, primusLib_i686 ? null
, useDisplayDevice ? false
, extraNvidiaDeviceOptions ? ""
@@ -40,7 +41,10 @@ let
primusLibs = lib.makeLibraryPath ([primus] ++ lib.optional (primusLib_i686 != null) primus_i686);
nvidia_x11s = [nvidia_x11] ++ lib.optional (nvidia_x11_i686 != null) nvidia_x11_i686;
nvidia_x11s = [ nvidia_x11 ]
++ lib.optional nvidia_x11.useGLVND libglvnd
++ lib.optionals (nvidia_x11_i686 != null)
([ nvidia_x11_i686 ] ++ lib.optional nvidia_x11_i686.useGLVND libglvnd_i686);
nvidiaLibs = lib.makeLibraryPath nvidia_x11s;
@@ -120,7 +124,7 @@ in stdenv.mkDerivation rec {
#"CONF_PRIMUS_LD_PATH=${primusLibs}"
] ++ lib.optionals useNvidia [
"CONF_LDPATH_NVIDIA=${nvidiaLibs}"
"CONF_MODPATH_NVIDIA=${nvidia_x11}/lib/xorg/modules"
"CONF_MODPATH_NVIDIA=${nvidia_x11.bin}/lib/xorg/modules"
];
CFLAGS = [