summary refs log tree commit diff
path: root/nixos/modules/hardware/opengl.nix
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2014-04-29 12:58:54 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2014-04-29 14:42:36 +0200
commit3fe96bcca168b8b3ca9b9cb56f2568c338b0936d (patch)
tree17d9cf57b9abcf2d6256e6550c0028861ef08ec9 /nixos/modules/hardware/opengl.nix
parente6b5c0121f2cdaaf1e63b16c74337bb87aae42b2 (diff)
downloadnixpkgs-3fe96bcca168b8b3ca9b9cb56f2568c338b0936d.tar
nixpkgs-3fe96bcca168b8b3ca9b9cb56f2568c338b0936d.tar.gz
nixpkgs-3fe96bcca168b8b3ca9b9cb56f2568c338b0936d.tar.bz2
nixpkgs-3fe96bcca168b8b3ca9b9cb56f2568c338b0936d.tar.lz
nixpkgs-3fe96bcca168b8b3ca9b9cb56f2568c338b0936d.tar.xz
nixpkgs-3fe96bcca168b8b3ca9b9cb56f2568c338b0936d.tar.zst
nixpkgs-3fe96bcca168b8b3ca9b9cb56f2568c338b0936d.zip
Rename hardware.opengl.videoDrivers back to services.xserver.videoDrivers
Fixes #2379.
The new name was a misnomer because the values really are X11 video
drivers (e.g. ‘cirrus’ or ‘nvidia’), not OpenGL implementations. That
it's also used to set an OpenGL implementation for kmscon is just
confusing overloading.
Diffstat (limited to 'nixos/modules/hardware/opengl.nix')
-rw-r--r--nixos/modules/hardware/opengl.nix52
1 files changed, 24 insertions, 28 deletions
diff --git a/nixos/modules/hardware/opengl.nix b/nixos/modules/hardware/opengl.nix
index 485ac008dd8..b2c97f0bfad 100644
--- a/nixos/modules/hardware/opengl.nix
+++ b/nixos/modules/hardware/opengl.nix
@@ -1,14 +1,21 @@
-{ config, pkgs, pkgs_i686, ... }:
+{ config, lib, pkgs, pkgs_i686, ... }:
+
+with lib;
+
 let
-  inherit (pkgs.lib) mkOption types mkIf optional optionals elem optionalString optionalAttrs;
 
   cfg = config.hardware.opengl;
 
   kernelPackages = config.boot.kernelPackages;
-in {
+
+  videoDrivers = config.services.xserver.videoDrivers;
+
+in
+
+{
   options = {
     hardware.opengl.enable = mkOption {
-      description = "Whether this configuration requires opengl.";
+      description = "Whether this configuration requires OpenGL.";
       type = types.bool;
       default = false;
       internal = true;
@@ -45,18 +52,6 @@ in {
       '';
     };
 
-
-    hardware.opengl.videoDrivers = mkOption {
-      type = types.listOf types.str;
-      # !!! We'd like "nv" here, but it segfaults the X server.
-      default = [ "ati" "cirrus" "intel" "vesa" "vmware" ];
-      example = [ "vesa" ];
-      description = ''
-        The names of the opengl video drivers the configuration
-        supports. They will be tried in order until one that
-        supports your card is found.
-      '';
-    };
   };
 
   config = mkIf cfg.enable {
@@ -71,21 +66,21 @@ in {
       ${optionalString (pkgs.stdenv.isi686) "ln -sf opengl-driver /run/opengl-driver-32"}
     ''
       #TODO:  The OpenGL driver should depend on what's detected at runtime.
-     +( if elem "nvidia" cfg.videoDrivers then
+     +( if elem "nvidia" videoDrivers then
           ''
             ln -sf ${kernelPackages.nvidia_x11} /run/opengl-driver
             ${optionalString cfg.driSupport32Bit
               "ln -sf ${pkgs_i686.linuxPackages.nvidia_x11.override { libsOnly = true; kernel = null; } } /run/opengl-driver-32"}
           ''
-        else if elem "nvidiaLegacy173" cfg.videoDrivers then
+        else if elem "nvidiaLegacy173" videoDrivers then
           "ln -sf ${kernelPackages.nvidia_x11_legacy173} /run/opengl-driver"
-        else if elem "nvidiaLegacy304" cfg.videoDrivers then
+        else if elem "nvidiaLegacy304" videoDrivers then
           ''
             ln -sf ${kernelPackages.nvidia_x11_legacy304} /run/opengl-driver
             ${optionalString cfg.driSupport32Bit
               "ln -sf ${pkgs_i686.linuxPackages.nvidia_x11_legacy304.override { libsOnly = true; kernel = null; } } /run/opengl-driver-32"}
           ''
-        else if elem "ati_unfree" cfg.videoDrivers then
+        else if elem "ati_unfree" videoDrivers then
           "ln -sf ${kernelPackages.ati_drivers_x11} /run/opengl-driver"
         else
           let
@@ -109,19 +104,20 @@ in {
       [ "/run/opengl-driver/lib" "/run/opengl-driver-32/lib" ];
 
     boot.extraModulePackages =
-      optional (elem "nvidia" cfg.videoDrivers) kernelPackages.nvidia_x11 ++
-      optional (elem "nvidiaLegacy173" cfg.videoDrivers) kernelPackages.nvidia_x11_legacy173 ++
-      optional (elem "nvidiaLegacy304" cfg.videoDrivers) kernelPackages.nvidia_x11_legacy304 ++
-      optional (elem "virtualbox" cfg.videoDrivers) kernelPackages.virtualboxGuestAdditions ++
-      optional (elem "ati_unfree" cfg.videoDrivers) kernelPackages.ati_drivers_x11;
+      optional (elem "nvidia" videoDrivers) kernelPackages.nvidia_x11 ++
+      optional (elem "nvidiaLegacy173" videoDrivers) kernelPackages.nvidia_x11_legacy173 ++
+      optional (elem "nvidiaLegacy304" videoDrivers) kernelPackages.nvidia_x11_legacy304 ++
+      optional (elem "virtualbox" videoDrivers) kernelPackages.virtualboxGuestAdditions ++
+      optional (elem "ati_unfree" videoDrivers) kernelPackages.ati_drivers_x11;
 
     boot.blacklistedKernelModules =
-      optionals (elem "nvidia" cfg.videoDrivers) [ "nouveau" "nvidiafb" ];
+      optionals (elem "nvidia" videoDrivers) [ "nouveau" "nvidiafb" ];
 
-    environment.etc =  (optionalAttrs (elem "ati_unfree" cfg.videoDrivers) {
+    environment.etc =
+      (optionalAttrs (elem "ati_unfree" videoDrivers) {
         "ati".source = "${kernelPackages.ati_drivers_x11}/etc/ati";
       })
-      // (optionalAttrs (elem "nvidia" cfg.videoDrivers) {
+      // (optionalAttrs (elem "nvidia" videoDrivers) {
         "OpenCL/vendors/nvidia.icd".source = "${kernelPackages.nvidia_x11}/lib/vendors/nvidia.icd";
       });
   };