diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2010-05-30 22:00:52 +0000 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2010-05-30 22:00:52 +0000 |
commit | eb4c33eecabf30b9e5dd298e396d3046daa60001 (patch) | |
tree | e1f188391081f3ab367ead1f7f3106ddfcf3a5fd | |
parent | 540c673364ecef13bd0b810d8d7b0dde901bbf78 (diff) | |
download | nixlib-eb4c33eecabf30b9e5dd298e396d3046daa60001.tar nixlib-eb4c33eecabf30b9e5dd298e396d3046daa60001.tar.gz nixlib-eb4c33eecabf30b9e5dd298e396d3046daa60001.tar.bz2 nixlib-eb4c33eecabf30b9e5dd298e396d3046daa60001.tar.lz nixlib-eb4c33eecabf30b9e5dd298e396d3046daa60001.tar.xz nixlib-eb4c33eecabf30b9e5dd298e396d3046daa60001.tar.zst nixlib-eb4c33eecabf30b9e5dd298e396d3046daa60001.zip |
* Added an option to enable support for 32-bit binaries (such as Wine
or Google Earth) on 64-bit NixOS on NVIDIA hardware. The 32-bit OpenGL library is symlinked from /var/run/opengl-driver-32, which is added to the LD_LIBRARY_PATH so that 32-bit binaries can find it. svn path=/nixos/trunk/; revision=22062
-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 49057f2d6dab..8a7b225e8500 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 c40468707465..e43b716a0ce2 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 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} |