summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2015-02-21 16:29:36 +0100
committerVladimír Čunát <vcunat@gmail.com>2015-02-21 16:34:24 +0100
commita3a467ce77ada3409ebcdc11a80b6621b0b3adca (patch)
treec0776d4bc964ded6df92e3dd0e80173929a765d3 /nixos
parent77986803a63a95505658e942d5e59d78279f1818 (diff)
downloadnixpkgs-a3a467ce77ada3409ebcdc11a80b6621b0b3adca.tar
nixpkgs-a3a467ce77ada3409ebcdc11a80b6621b0b3adca.tar.gz
nixpkgs-a3a467ce77ada3409ebcdc11a80b6621b0b3adca.tar.bz2
nixpkgs-a3a467ce77ada3409ebcdc11a80b6621b0b3adca.tar.lz
nixpkgs-a3a467ce77ada3409ebcdc11a80b6621b0b3adca.tar.xz
nixpkgs-a3a467ce77ada3409ebcdc11a80b6621b0b3adca.tar.zst
nixpkgs-a3a467ce77ada3409ebcdc11a80b6621b0b3adca.zip
nixos/nvidia: use correct 32-bit legacy libs; refactor
Fixes #6127.
Now we avoid multiple switches among the version possibilities.
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/hardware/video/nvidia.nix21
1 files changed, 11 insertions, 10 deletions
diff --git a/nixos/modules/hardware/video/nvidia.nix b/nixos/modules/hardware/video/nvidia.nix
index 325aa5f093f..2b20dc7395a 100644
--- a/nixos/modules/hardware/video/nvidia.nix
+++ b/nixos/modules/hardware/video/nvidia.nix
@@ -11,20 +11,21 @@ let
   # FIXME: should introduce an option like
   # ‘hardware.video.nvidia.package’ for overriding the default NVIDIA
   # driver.
-  enabled = elem "nvidia" drivers || elem "nvidiaLegacy173" drivers
-    || elem "nvidiaLegacy304" drivers || elem "nvidiaLegacy340" drivers;
-
-  nvidia_x11 =
+  nvidiaForKernel = kernelPackages:
     if elem "nvidia" drivers then
-      config.boot.kernelPackages.nvidia_x11
+      kernelPackages.nvidia_x11
     else if elem "nvidiaLegacy173" drivers then
-      config.boot.kernelPackages.nvidia_x11_legacy173
+      kernelPackages.nvidia_x11_legacy173
     else if elem "nvidiaLegacy304" drivers then
-      config.boot.kernelPackages.nvidia_x11_legacy304
+      kernelPackages.nvidia_x11_legacy304
     else if elem "nvidiaLegacy340" drivers then
-      config.boot.kernelPackages.nvidia_x11_legacy340
-    else throw "impossible";
+      kernelPackages.nvidia_x11_legacy340
+    else null;
+
+  nvidia_x11 = nvidiaForKernel config.boot.kernelPackages;
+  nvidia_libs32 = (nvidiaForKernel pkgs_i686.linuxPackages).override { libsOnly = true; kernel = null; };
 
+  enabled = nvidia_x11 != null;
 in
 
 {
@@ -40,7 +41,7 @@ in
       '';
 
     hardware.opengl.package = nvidia_x11;
-    hardware.opengl.package32 = pkgs_i686.linuxPackages.nvidia_x11.override { libsOnly = true; kernel = null; };
+    hardware.opengl.package32 = nvidia_libs32;
 
     environment.systemPackages = [ nvidia_x11 ];