about summary refs log tree commit diff
path: root/nixos/modules/hardware
diff options
context:
space:
mode:
authorAtemu <atemu.main@gmail.com>2023-02-26 18:28:46 +0100
committerAtemu <atemu.main@gmail.com>2023-03-25 21:08:50 +0100
commitbf1785d0a91d5d3bb0ef3c2afe031554f17a87e4 (patch)
treeac273997cec108d252f5eca3be6354c3ca3e286d /nixos/modules/hardware
parentc4752a1631e46bde11bf8038f30e067c39b97cd4 (diff)
downloadnixlib-bf1785d0a91d5d3bb0ef3c2afe031554f17a87e4.tar
nixlib-bf1785d0a91d5d3bb0ef3c2afe031554f17a87e4.tar.gz
nixlib-bf1785d0a91d5d3bb0ef3c2afe031554f17a87e4.tar.bz2
nixlib-bf1785d0a91d5d3bb0ef3c2afe031554f17a87e4.tar.lz
nixlib-bf1785d0a91d5d3bb0ef3c2afe031554f17a87e4.tar.xz
nixlib-bf1785d0a91d5d3bb0ef3c2afe031554f17a87e4.tar.zst
nixlib-bf1785d0a91d5d3bb0ef3c2afe031554f17a87e4.zip
nixos/opengl: add mesaPackage option
Diffstat (limited to 'nixos/modules/hardware')
-rw-r--r--nixos/modules/hardware/opengl.nix41
1 files changed, 33 insertions, 8 deletions
diff --git a/nixos/modules/hardware/opengl.nix b/nixos/modules/hardware/opengl.nix
index 9108bcbd1652..2193f01613df 100644
--- a/nixos/modules/hardware/opengl.nix
+++ b/nixos/modules/hardware/opengl.nix
@@ -69,19 +69,48 @@ in
       package = mkOption {
         type = types.package;
         internal = true;
+        default = cfg.mesaPackage;
         description = lib.mdDoc ''
           The package that provides the OpenGL implementation.
+
+          The default is Mesa's drivers which should cover all OpenGL-capable
+          hardware. If you want to use another Mesa version, adjust
+          {option}`mesaPackage`.
         '';
       };
-
       package32 = mkOption {
         type = types.package;
         internal = true;
+        default = cfg.mesaPackage32;
+        description = lib.mdDoc ''
+          Same as {option}`package` but for the 32-bit OpenGL implementation on
+          64-bit systems. Used when {option}`driSupport32Bit` is set.
+        '';
+      };
+
+      mesaPackage = mkOption {
+        type = types.package;
+        default = pkgs.mesa;
+        defaultText = literalExpression "pkgs.mesa";
+        example = literalExpression "pkgs.mesa_23";
         description = lib.mdDoc ''
-          The package that provides the 32-bit OpenGL implementation on
-          64-bit systems. Used when {option}`driSupport32Bit` is
-          set.
+          The Mesa driver package used for rendering support on the system.
+
+          You should only need to adjust this if you require a newer Mesa
+          version for your hardware or because you need to patch a bug.
         '';
+        apply = mesa: mesa.drivers or throw "`mesa` package must have a `drivers` output.";
+      };
+      mesaPackage32 = mkOption {
+        type = types.package;
+        default = pkgs.pkgsi686Linux.mesa;
+        defaultText = literalExpression "pkgs.pkgsi686Linux.mesa";
+        example = literalExpression "pkgs.pkgsi686Linux.mesa_23";
+        description = lib.mdDoc ''
+          Same as {option}`mesaPackage` but for the 32-bit Mesa on 64-bit
+          systems. Used when {option}`driSupport32Bit` is set.
+        '';
+        apply = mesa: mesa.drivers or throw "`mesa` package must have a `drivers` output.";
       };
 
       extraPackages = mkOption {
@@ -97,7 +126,6 @@ in
           :::
         '';
       };
-
       extraPackages32 = mkOption {
         type = types.listOf types.package;
         default = [];
@@ -153,9 +181,6 @@ in
     environment.sessionVariables.LD_LIBRARY_PATH = mkIf cfg.setLdLibraryPath
       ([ "/run/opengl-driver/lib" ] ++ optional cfg.driSupport32Bit "/run/opengl-driver-32/lib");
 
-    hardware.opengl.package = mkDefault pkgs.mesa.drivers;
-    hardware.opengl.package32 = mkDefault pkgs.pkgsi686Linux.mesa.drivers;
-
     boot.extraModulePackages = optional (elem "virtualbox" videoDrivers) kernelPackages.virtualboxGuestAdditions;
   };
 }