diff options
Diffstat (limited to 'modules/services/x11/xserver.nix')
-rw-r--r-- | modules/services/x11/xserver.nix | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/modules/services/x11/xserver.nix b/modules/services/x11/xserver.nix index 34eefd3023d8..a5a4c908befa 100644 --- a/modules/services/x11/xserver.nix +++ b/modules/services/x11/xserver.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ config, pkgs, pkgs_i686, ... }: with pkgs.lib; @@ -199,6 +199,15 @@ in ''; }; + driSupport32Bit = mkOption { + default = false; + description = '' + On 64-bit systems, whether to support Direct Rendering for + 32-bit applications (such as Wine). This is currently only + supported for the <literal>nvidia</literal> driver. + ''; + }; + startOpenSSHAgent = mkOption { default = true; description = '' @@ -420,16 +429,18 @@ in '' rm -f /var/run/opengl-driver ${# !!! The OpenGL driver depends on what's detected at runtime. - if elem "nvidia" driverNames then '' - ln -sf ${kernelPackages.nvidia_x11} /var/run/opengl-driver - '' - else if elem "nvidiaLegacy" driverNames then '' - ln -sf ${kernelPackages.nvidia_x11_legacy} /var/run/opengl-driver - '' + if elem "nvidia" driverNames then + '' + ln -sf ${kernelPackages.nvidia_x11} /var/run/opengl-driver + ${optionalString (pkgs.stdenv.system == "x86_64-linux" && cfg.driSupport32Bit) + "ln -sf ${pkgs_i686.linuxPackages.nvidia_x11.override { libsOnly = true; kernel = null; } } /var/run/opengl-driver-32"} + '' + else if elem "nvidiaLegacy" driverNames then + "ln -sf ${kernelPackages.nvidia_x11_legacy} /var/run/opengl-driver" else if cfg.driSupport then "ln -sf ${pkgs.mesa} /var/run/opengl-driver" else "" - } + } ${cfg.displayManager.job.preStart} |