From bf1785d0a91d5d3bb0ef3c2afe031554f17a87e4 Mon Sep 17 00:00:00 2001 From: Atemu Date: Sun, 26 Feb 2023 18:28:46 +0100 Subject: [PATCH] nixos/opengl: add mesaPackage option --- nixos/modules/hardware/opengl.nix | 41 +++++++++++++++++++++++++------ 1 file 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,21 +69,50 @@ 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 '' - The package that provides the 32-bit OpenGL implementation on - 64-bit systems. Used when {option}`driSupport32Bit` is - set. + 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 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 { type = types.listOf types.package; default = []; @@ -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; }; }