diff options
Diffstat (limited to 'pkgs/os-specific/linux/nvidia-x11/generic.nix')
-rw-r--r-- | pkgs/os-specific/linux/nvidia-x11/generic.nix | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/pkgs/os-specific/linux/nvidia-x11/generic.nix b/pkgs/os-specific/linux/nvidia-x11/generic.nix index d62ade04e63..2d325ab3d56 100644 --- a/pkgs/os-specific/linux/nvidia-x11/generic.nix +++ b/pkgs/os-specific/linux/nvidia-x11/generic.nix @@ -1,8 +1,11 @@ { version +, url ? null , sha256_32bit ? null , sha256_64bit , settingsSha256 +, settingsVersion ? version , persistencedSha256 +, persistencedVersion ? version , useGLVND ? true , useProfiles ? true , preferGtk2 ? false @@ -11,17 +14,22 @@ , prePatch ? "" , patches ? [] , broken ? false -}: +}@args: -{ stdenv, callPackage, pkgs, pkgsi686Linux, fetchurl +{ lib, stdenv, callPackage, pkgs, pkgsi686Linux, fetchurl , kernel ? null, perl, nukeReferences , # Whether to build the libraries only (i.e. not the kernel module or # nvidia-settings). Used to support 32-bit binaries on 64-bit # Linux. libsOnly ? false +, # don't include the bundled 32-bit libraries on 64-bit platforms, + # even if it’s in downloaded binary + disable32Bit ? false + # 32 bit libs only version of this package +, lib32 ? null }: -with stdenv.lib; +with lib; assert !libsOnly -> kernel != null; assert versionOlder version "391" -> sha256_32bit != null; @@ -30,7 +38,7 @@ assert ! versionOlder version "391" -> stdenv.hostPlatform.system == "x86_64-lin let nameSuffix = optionalString (!libsOnly) "-${kernel.version}"; pkgSuffix = optionalString (versionOlder version "304") "-pkg0"; - i686bundled = versionAtLeast version "391"; + i686bundled = versionAtLeast version "391" && !disable32Bit; libPathFor = pkgs: pkgs.lib.makeLibraryPath [ pkgs.libdrm pkgs.xorg.libXext pkgs.xorg.libX11 pkgs.xorg.libXv pkgs.xorg.libXrandr pkgs.xorg.libxcb pkgs.zlib pkgs.stdenv.cc.cc ]; @@ -43,12 +51,12 @@ let src = if stdenv.hostPlatform.system == "x86_64-linux" then fetchurl { - url = "https://download.nvidia.com/XFree86/Linux-x86_64/${version}/NVIDIA-Linux-x86_64-${version}${pkgSuffix}.run"; + url = args.url or "https://us.download.nvidia.com/XFree86/Linux-x86_64/${version}/NVIDIA-Linux-x86_64-${version}${pkgSuffix}.run"; sha256 = sha256_64bit; } else if stdenv.hostPlatform.system == "i686-linux" then fetchurl { - url = "https://download.nvidia.com/XFree86/Linux-x86/${version}/NVIDIA-Linux-x86-${version}${pkgSuffix}.run"; + url = args.url or "https://download.nvidia.com/XFree86/Linux-x86/${version}/NVIDIA-Linux-x86-${version}${pkgSuffix}.run"; sha256 = sha256_32bit; } else throw "nvidia-x11 does not support platform ${stdenv.hostPlatform.system}"; @@ -86,9 +94,12 @@ let withGtk3 = !preferGtk2; }; persistenced = mapNullable (hash: callPackage (import ./persistenced.nix self hash) { }) persistencedSha256; + inherit persistencedVersion settingsVersion; + } // optionalAttrs (!i686bundled) { + inherit lib32; }; - meta = with stdenv.lib; { + meta = with lib; { homepage = "https://www.nvidia.com/object/unix.html"; description = "X.org driver and kernel module for NVIDIA graphics cards"; license = licenses.unfreeRedistributable; |