diff options
-rw-r--r-- | lib/eval-config.nix | 1 | ||||
-rw-r--r-- | modules/programs/bash/bashrc.sh | 2 | ||||
-rw-r--r-- | modules/services/x11/xserver.nix | 27 |
3 files changed, 21 insertions, 9 deletions
diff --git a/lib/eval-config.nix b/lib/eval-config.nix index 49057f2d6da..8a7b225e850 100644 --- a/lib/eval-config.nix +++ b/lib/eval-config.nix @@ -33,6 +33,7 @@ rec { inherit pkgs modules baseModules; modulesPath = ../modules; servicesPath = services; + pkgs_i686 = import nixpkgs { system = "i686-linux"; }; }; # Import Nixpkgs, allowing the NixOS option nixpkgs.config to diff --git a/modules/programs/bash/bashrc.sh b/modules/programs/bash/bashrc.sh index c4046870746..e43b716a0ce 100644 --- a/modules/programs/bash/bashrc.sh +++ b/modules/programs/bash/bashrc.sh @@ -3,7 +3,7 @@ if [ -n "$NOSYSBASHRC" ]; then fi # Initialise a bunch of environment variables. -export LD_LIBRARY_PATH=/var/run/opengl-driver/lib +export LD_LIBRARY_PATH=/var/run/opengl-driver/lib:/var/run/opengl-driver-32/lib # !!! only set if needed export MODULE_DIR=@modulesTree@/lib/modules export NIXPKGS_CONFIG=/nix/etc/config.nix export NIXPKGS_ALL=/etc/nixos/nixpkgs diff --git a/modules/services/x11/xserver.nix b/modules/services/x11/xserver.nix index 34eefd3023d..a5a4c908bef 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} |