From 3fe96bcca168b8b3ca9b9cb56f2568c338b0936d Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 29 Apr 2014 12:58:54 +0200 Subject: Rename hardware.opengl.videoDrivers back to services.xserver.videoDrivers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- nixos/doc/manual/configuration.xml | 4 +- nixos/modules/hardware/opengl.nix | 52 ++++++++++------------ .../installer/cd-dvd/system-tarball-sheevaplug.nix | 3 +- .../installer/tools/nixos-generate-config.pl | 2 +- nixos/modules/installer/virtualbox-demo.nix | 2 +- nixos/modules/rename.nix | 2 +- nixos/modules/services/x11/terminal-server.nix | 2 +- nixos/modules/services/x11/xserver.nix | 18 ++++++-- nixos/modules/virtualisation/qemu-vm.nix | 2 +- nixos/modules/virtualisation/virtualbox-guest.nix | 2 +- 10 files changed, 49 insertions(+), 40 deletions(-) (limited to 'nixos') diff --git a/nixos/doc/manual/configuration.xml b/nixos/doc/manual/configuration.xml index 0ffee826dc49..803a3393d156 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 vesa and intel). You can also specify a driver manually, e.g. -hardware.opengl.videoDrivers = [ "r128" ]; +services.xserver.videoDrivers = [ "r128" ]; to enable X.org’s xf86-video-r128 driver. @@ -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: -hardware.opengl.videoDrivers = [ "nvidia" ]; +services.xserver.videoDrivers = [ "nvidia" ]; You may need to reboot after enabling this driver to prevent a clash with other kernel modules. diff --git a/nixos/modules/hardware/opengl.nix b/nixos/modules/hardware/opengl.nix index 485ac008dd8a..b2c97f0bfad2 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 1008bd5d3d0d..3626308bff80 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 da1d26882772..89f112cc6bf0 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 0a52cbea2897..f68f8dc40aa8 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 ae0b4003fee5..1a0c7c0168cf 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 bdc23c0acd18..a036e085b0bf 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 65f93b544996..941d08c46414 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 - instead. + 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 6605b94439bc..323f1bfc57e0 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 96354f1d81d0..b3847daf12c0 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 = '' -- cgit 1.4.1