diff options
-rw-r--r-- | nixos/doc/manual/configuration.xml | 4 | ||||
-rw-r--r-- | nixos/modules/hardware/opengl.nix | 52 | ||||
-rw-r--r-- | nixos/modules/installer/cd-dvd/system-tarball-sheevaplug.nix | 3 | ||||
-rw-r--r-- | nixos/modules/installer/tools/nixos-generate-config.pl | 2 | ||||
-rw-r--r-- | nixos/modules/installer/virtualbox-demo.nix | 2 | ||||
-rw-r--r-- | nixos/modules/rename.nix | 2 | ||||
-rw-r--r-- | nixos/modules/services/x11/terminal-server.nix | 2 | ||||
-rw-r--r-- | nixos/modules/services/x11/xserver.nix | 18 | ||||
-rw-r--r-- | nixos/modules/virtualisation/qemu-vm.nix | 2 | ||||
-rw-r--r-- | nixos/modules/virtualisation/virtualbox-guest.nix | 2 |
10 files changed, 49 insertions, 40 deletions
diff --git a/nixos/doc/manual/configuration.xml b/nixos/doc/manual/configuration.xml index 0ffee826dc4..803a3393d15 100644 --- a/nixos/doc/manual/configuration.xml +++ b/nixos/doc/manual/configuration.xml @@ -1195,7 +1195,7 @@ driver from a set of X.org drivers (such as <literal>vesa</literal> and <literal>intel</literal>). You can also specify a driver manually, e.g. <programlisting> -hardware.opengl.videoDrivers = [ "r128" ]; +services.xserver.videoDrivers = [ "r128" ]; </programlisting> to enable X.org’s <literal>xf86-video-r128</literal> driver.</para> @@ -1238,7 +1238,7 @@ $ systemctl start display-manager.service has better 3D performance than the X.org drivers. It is not enabled by default because it’s not free software. You can enable it as follows: <programlisting> -hardware.opengl.videoDrivers = [ "nvidia" ]; +services.xserver.videoDrivers = [ "nvidia" ]; </programlisting> You may need to reboot after enabling this driver to prevent a clash with other kernel modules.</para> 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"; }); }; diff --git a/nixos/modules/installer/cd-dvd/system-tarball-sheevaplug.nix b/nixos/modules/installer/cd-dvd/system-tarball-sheevaplug.nix index 1008bd5d3d0..3626308bff8 100644 --- a/nixos/modules/installer/cd-dvd/system-tarball-sheevaplug.nix +++ b/nixos/modules/installer/cd-dvd/system-tarball-sheevaplug.nix @@ -138,7 +138,8 @@ in }; # Setting vesa, we don't get the nvidia driver, which can't work in arm. - hardware.opengl.videoDrivers = [ "vesa" ]; + services.xserver.videoDrivers = [ "vesa" ]; + services.nixosManual.enable = false; # Include the firmware for various wireless cards. diff --git a/nixos/modules/installer/tools/nixos-generate-config.pl b/nixos/modules/installer/tools/nixos-generate-config.pl index da1d2688277..89f112cc6bf 100644 --- a/nixos/modules/installer/tools/nixos-generate-config.pl +++ b/nixos/modules/installer/tools/nixos-generate-config.pl @@ -165,7 +165,7 @@ foreach my $path (glob "/sys/bus/pci/devices/*") { pciCheck $path; } -push @attrs, "hardware.opengl.videoDrivers = [ \"$videoDriver\" ];" if $videoDriver; +push @attrs, "services.xserver.videoDrivers = [ \"$videoDriver\" ];" if $videoDriver; # Idem for USB devices. diff --git a/nixos/modules/installer/virtualbox-demo.nix b/nixos/modules/installer/virtualbox-demo.nix index 0a52cbea289..f68f8dc40aa 100644 --- a/nixos/modules/installer/virtualbox-demo.nix +++ b/nixos/modules/installer/virtualbox-demo.nix @@ -15,5 +15,5 @@ with lib; # Add some more video drivers to give X11 a shot at working in # VMware and QEMU. - hardware.opengl.videoDrivers = mkOverride 40 [ "virtualbox" "vmware" "cirrus" "vesa" ]; + services.xserver.videoDrivers = mkOverride 40 [ "virtualbox" "vmware" "cirrus" "vesa" ]; } diff --git a/nixos/modules/rename.nix b/nixos/modules/rename.nix index ae0b4003fee..1a0c7c0168c 100644 --- a/nixos/modules/rename.nix +++ b/nixos/modules/rename.nix @@ -121,7 +121,7 @@ in zipModules ([] ++ obsolete [ "services" "xserver" "driSupport" ] [ "hardware" "opengl" "driSupport" ] ++ obsolete [ "services" "xserver" "driSupport32Bit" ] [ "hardware" "opengl" "driSupport32Bit" ] ++ obsolete [ "services" "xserver" "s3tcSupport" ] [ "hardware" "opengl" "s3tcSupport" ] -++ obsolete [ "services" "xserver" "videoDrivers" ] [ "hardware" "opengl" "videoDrivers" ] +++ obsolete [ "hardware" "opengl" "videoDrivers" ] [ "services" "xserver" "videoDrivers" ] ++ obsolete [ "services" "mysql55" ] [ "services" "mysql" ] diff --git a/nixos/modules/services/x11/terminal-server.nix b/nixos/modules/services/x11/terminal-server.nix index bdc23c0acd1..a036e085b0b 100644 --- a/nixos/modules/services/x11/terminal-server.nix +++ b/nixos/modules/services/x11/terminal-server.nix @@ -27,7 +27,7 @@ in config = { services.xserver.enable = true; - hardware.opengl.videoDrivers = []; + services.xserver.videoDrivers = []; # Enable KDM. Any display manager will do as long as it supports XDMCP. services.xserver.displayManager.kdm.enable = true; diff --git a/nixos/modules/services/x11/xserver.nix b/nixos/modules/services/x11/xserver.nix index 65f93b54499..941d08c4641 100644 --- a/nixos/modules/services/x11/xserver.nix +++ b/nixos/modules/services/x11/xserver.nix @@ -24,7 +24,7 @@ let intel-testing = { modules = with pkgs.xorg; [ xf86videointel-testing glamoregl ]; driverName = "intel"; }; }; - driverNames = config.hardware.opengl.videoDrivers; + driverNames = cfg.videoDrivers; needsAcpid = (elem "nvidia" driverNames) || @@ -181,6 +181,18 @@ in ''; }; + 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 video drivers the configuration + supports. They will be tried in order until one that + supports your card is found. + ''; + }; + videoDriver = mkOption { type = types.nullOr types.str; default = null; @@ -188,7 +200,7 @@ in description = '' The name of the video driver for your graphics card. This option is obsolete; please set the - <option>hardware.opengl.videoDrivers</option> instead. + <option>services.xserver.videoDrivers</option> instead. ''; }; @@ -386,7 +398,7 @@ in config = mkIf cfg.enable { hardware.opengl.enable = true; - hardware.opengl.videoDrivers = mkIf (cfg.videoDriver != null) [ cfg.videoDriver ]; + services.xserver.videoDrivers = mkIf (cfg.videoDriver != null) [ cfg.videoDriver ]; assertions = [ { assertion = !(config.programs.ssh.startAgent && cfg.startGnuPGAgent); diff --git a/nixos/modules/virtualisation/qemu-vm.nix b/nixos/modules/virtualisation/qemu-vm.nix index 6605b94439b..323f1bfc57e 100644 --- a/nixos/modules/virtualisation/qemu-vm.nix +++ b/nixos/modules/virtualisation/qemu-vm.nix @@ -386,7 +386,7 @@ in # When building a regular system configuration, override whatever # video driver the host uses. - hardware.opengl.videoDrivers = mkVMOverride [ "vesa" ]; + services.xserver.videoDrivers = mkVMOverride [ "vesa" ]; services.xserver.defaultDepth = mkVMOverride 0; services.xserver.resolutions = mkVMOverride [ { x = 1024; y = 768; } ]; services.xserver.monitorSection = diff --git a/nixos/modules/virtualisation/virtualbox-guest.nix b/nixos/modules/virtualisation/virtualbox-guest.nix index 96354f1d81d..b3847daf12c 100644 --- a/nixos/modules/virtualisation/virtualbox-guest.nix +++ b/nixos/modules/virtualisation/virtualbox-guest.nix @@ -54,7 +54,7 @@ optionalAttrs (pkgs.stdenv.isi686 || pkgs.stdenv.isx86_64) # ugly... serviceConfig.ExecStart = "@${kernel.virtualboxGuestAdditions}/sbin/VBoxService VBoxService --foreground"; }; - hardware.opengl.videoDrivers = mkOverride 50 [ "virtualbox" ]; + services.xserver.videoDrivers = mkOverride 50 [ "virtualbox" ]; services.xserver.config = '' |