summaryrefslogtreecommitdiffstats
path: root/nixos/modules/hardware
diff options
context:
space:
mode:
Diffstat (limited to 'nixos/modules/hardware')
-rw-r--r--nixos/modules/hardware/opengl.nix168
-rw-r--r--nixos/modules/hardware/video/nvidia.nix11
2 files changed, 87 insertions, 92 deletions
diff --git a/nixos/modules/hardware/opengl.nix b/nixos/modules/hardware/opengl.nix
index d9646704e6f6..b371af353cf9 100644
--- a/nixos/modules/hardware/opengl.nix
+++ b/nixos/modules/hardware/opengl.nix
@@ -14,7 +14,6 @@ let
name = "mesa-drivers+txc-${p.mesa_drivers.version}";
paths =
[ p.mesa_drivers
- p.mesa_drivers.out # mainly for libGL
(if cfg.s3tcSupport then p.libtxc_dxtn else p.libtxc_dxtn_s2tc)
];
};
@@ -33,89 +32,92 @@ in
{
options = {
- hardware.opengl.enable = mkOption {
- description = ''
- Whether to enable OpenGL drivers. This is needed to enable
- OpenGL support in X11 systems, as well as for Wayland compositors
- like sway, way-cooler and Weston. It is enabled by default
- by the corresponding modules, so you do not usually have to
- set it yourself, only if there is no module for your wayland
- compositor of choice. See services.xserver.enable,
- programs.sway.enable, and programs.way-cooler.enable.
- '';
- type = types.bool;
- default = false;
- };
-
- hardware.opengl.driSupport = mkOption {
- type = types.bool;
- default = true;
- description = ''
- Whether to enable accelerated OpenGL rendering through the
- Direct Rendering Interface (DRI).
- '';
- };
-
- hardware.opengl.driSupport32Bit = mkOption {
- type = types.bool;
- 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> and
- <literal>ati_unfree</literal> drivers, as well as
- <literal>Mesa</literal>.
- '';
- };
-
- hardware.opengl.s3tcSupport = mkOption {
- type = types.bool;
- default = false;
- description = ''
- Make S3TC(S3 Texture Compression) via libtxc_dxtn available
- to OpenGL drivers instead of the patent-free S2TC replacement.
-
- Using this library may require a patent license depending on your location.
- '';
- };
-
- hardware.opengl.package = mkOption {
- type = types.package;
- internal = true;
- description = ''
- The package that provides the OpenGL implementation.
- '';
- };
- hardware.opengl.package32 = mkOption {
- type = types.package;
- internal = true;
- description = ''
- The package that provides the 32-bit OpenGL implementation on
- 64-bit systems. Used when <option>driSupport32Bit</option> is
- set.
- '';
- };
-
- hardware.opengl.extraPackages = mkOption {
- type = types.listOf types.package;
- default = [];
- example = literalExample "with pkgs; [ vaapiIntel libvdpau-va-gl vaapiVdpau intel-ocl ]";
- description = ''
- Additional packages to add to OpenGL drivers. This can be used
- to add OpenCL drivers, VA-API/VDPAU drivers etc.
- '';
- };
-
- hardware.opengl.extraPackages32 = mkOption {
- type = types.listOf types.package;
- default = [];
- example = literalExample "with pkgs.pkgsi686Linux; [ vaapiIntel libvdpau-va-gl vaapiVdpau ]";
- description = ''
- Additional packages to add to 32-bit OpenGL drivers on
- 64-bit systems. Used when <option>driSupport32Bit</option> is
- set. This can be used to add OpenCL drivers, VA-API/VDPAU drivers etc.
- '';
+ hardware.opengl = {
+ enable = mkOption {
+ description = ''
+ Whether to enable OpenGL drivers. This is needed to enable
+ OpenGL support in X11 systems, as well as for Wayland compositors
+ like sway, way-cooler and Weston. It is enabled by default
+ by the corresponding modules, so you do not usually have to
+ set it yourself, only if there is no module for your wayland
+ compositor of choice. See services.xserver.enable,
+ programs.sway.enable, and programs.way-cooler.enable.
+ '';
+ type = types.bool;
+ default = false;
+ };
+
+ driSupport = mkOption {
+ type = types.bool;
+ default = true;
+ description = ''
+ Whether to enable accelerated OpenGL rendering through the
+ Direct Rendering Interface (DRI).
+ '';
+ };
+
+ driSupport32Bit = mkOption {
+ type = types.bool;
+ 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> and
+ <literal>ati_unfree</literal> drivers, as well as
+ <literal>Mesa</literal>.
+ '';
+ };
+
+ s3tcSupport = mkOption {
+ type = types.bool;
+ default = false;
+ description = ''
+ Make S3TC(S3 Texture Compression) via libtxc_dxtn available
+ to OpenGL drivers instead of the patent-free S2TC replacement.
+
+ Using this library may require a patent license depending on your location.
+ '';
+ };
+
+ package = mkOption {
+ type = types.package;
+ internal = true;
+ description = ''
+ The package that provides the OpenGL implementation.
+ '';
+ };
+
+ package32 = mkOption {
+ type = types.package;
+ internal = true;
+ description = ''
+ The package that provides the 32-bit OpenGL implementation on
+ 64-bit systems. Used when <option>driSupport32Bit</option> is
+ set.
+ '';
+ };
+
+ extraPackages = mkOption {
+ type = types.listOf types.package;
+ default = [];
+ example = literalExample "with pkgs; [ vaapiIntel libvdpau-va-gl vaapiVdpau intel-ocl ]";
+ description = ''
+ Additional packages to add to OpenGL drivers. This can be used
+ to add OpenCL drivers, VA-API/VDPAU drivers etc.
+ '';
+ };
+
+ extraPackages32 = mkOption {
+ type = types.listOf types.package;
+ default = [];
+ example = literalExample "with pkgs.pkgsi686Linux; [ vaapiIntel libvdpau-va-gl vaapiVdpau ]";
+ description = ''
+ Additional packages to add to 32-bit OpenGL drivers on
+ 64-bit systems. Used when <option>driSupport32Bit</option> is
+ set. This can be used to add OpenCL drivers, VA-API/VDPAU drivers etc.
+ '';
+ };
};
};
diff --git a/nixos/modules/hardware/video/nvidia.nix b/nixos/modules/hardware/video/nvidia.nix
index a1f1cef07ada..eb1952280331 100644
--- a/nixos/modules/hardware/video/nvidia.nix
+++ b/nixos/modules/hardware/video/nvidia.nix
@@ -25,13 +25,6 @@ let
nvidia_x11 = nvidiaForKernel config.boot.kernelPackages;
nvidia_libs32 = (nvidiaForKernel pkgs_i686.linuxPackages).override { libsOnly = true; kernel = null; };
- nvidiaPackage = nvidia: pkgs:
- if !nvidia.useGLVND then nvidia.out
- else pkgs.buildEnv {
- name = "nvidia-libs";
- paths = [ pkgs.libglvnd nvidia.out ];
- };
-
enabled = nvidia_x11 != null;
in
@@ -57,8 +50,8 @@ in
source = "${nvidia_x11.bin}/share/nvidia/nvidia-application-profiles-rc";
};
- hardware.opengl.package = nvidiaPackage nvidia_x11 pkgs;
- hardware.opengl.package32 = nvidiaPackage nvidia_libs32 pkgs_i686;
+ hardware.opengl.package = nvidia_x11.out;
+ hardware.opengl.package32 = nvidia_libs32.out;
environment.systemPackages = [ nvidia_x11.bin nvidia_x11.settings ]
++ lib.filter (p: p != null) [ nvidia_x11.persistenced ];