diff --git a/hardware/amd/amdgpu.nix b/hardware/amd/amdgpu.nix index 66926ec..fa369a7 100644 --- a/hardware/amd/amdgpu.nix +++ b/hardware/amd/amdgpu.nix @@ -4,7 +4,6 @@ let cfg = config.aviallon.hardware.amd; devCfg = config.aviallon.developer; generalCfg = config.aviallon.general; - myMesa = if generalCfg.unsafeOptimizations then pkgs.mesaOptimized else pkgs.mesa; in { config = mkIf (cfg.enable && cfg.kernelDriver == "amdgpu") { boot.initrd.kernelModules = [ "amdgpu" ]; diff --git a/hardware/amd/default.nix b/hardware/amd/default.nix index 18b1fc4..952314a 100644 --- a/hardware/amd/default.nix +++ b/hardware/amd/default.nix @@ -2,9 +2,7 @@ with lib; let cfg = config.aviallon.hardware.amd; - devCfg = config.aviallon.developer; generalCfg = config.aviallon.general; - myMesa = if generalCfg.unsafeOptimizations then pkgs.mesaOptimized else pkgs.mesa; in { options.aviallon.hardware.amd = { enable = mkEnableOption "AMD gpus"; @@ -28,18 +26,11 @@ in { ]; config = mkIf cfg.enable { - programs.corectrl.enable = mkIf generalCfg.unsafeOptimizations true; hardware.opengl = { enable = true; - package = with pkgs; myMesa.drivers; - package32 = with pkgs; myMesa.drivers; - extraPackages = with pkgs; mkIf (!cfg.useProprietary) (mkAfter [ - (hiPrio myMesa) - ]); - extraPackages32 = with pkgs.driversi686Linux; mkIf (!cfg.useProprietary) [ - (hiPrio myMesa) - ]; }; + + aviallon.hardware.mesa.enable = mkDefault (!cfg.useProprietary); }; } diff --git a/hardware/amd/radeon.nix b/hardware/amd/radeon.nix index 501c6ba..671cc1e 100644 --- a/hardware/amd/radeon.nix +++ b/hardware/amd/radeon.nix @@ -4,7 +4,6 @@ let cfg = config.aviallon.hardware.amd; devCfg = config.aviallon.developer; generalCfg = config.aviallon.general; - myMesa = if generalCfg.unsafeOptimizations then pkgs.mesaOptimized else pkgs.mesa; in { config = mkIf (cfg.enable && cfg.kernelDriver == "radeon") { boot.initrd.kernelModules = [ "radeon" ]; diff --git a/hardware/default.nix b/hardware/default.nix index 3f9e002..49f4dfb 100644 --- a/hardware/default.nix +++ b/hardware/default.nix @@ -12,6 +12,7 @@ in ./amd ./nvidia ./intel + ./mesa.nix ]; config = { diff --git a/hardware/intel/default.nix b/hardware/intel/default.nix index 40332ce..4e33d69 100644 --- a/hardware/intel/default.nix +++ b/hardware/intel/default.nix @@ -51,5 +51,6 @@ in // { "i915.fastboot" = 1; }; + aviallon.hardware.mesa.enable = mkDefault true; }; } diff --git a/hardware/mesa.nix b/hardware/mesa.nix new file mode 100644 index 0000000..ceb7637 --- /dev/null +++ b/hardware/mesa.nix @@ -0,0 +1,53 @@ +{ config, pkgs, lib, ... }: +with lib; +let + cfg = config.aviallon.hardware.mesa; + devCfg = config.aviallon.developer; + generalCfg = config.aviallon.general; + packageWithDefaults = types.package // { + merge = loc: defs: + let res = mergeDefaultOption loc defs; + in if builtins.isPath res || (builtins.isString res && ! builtins.hasContext res) + then toDerivation res + else res; + }; +in { + options.aviallon.hardware.mesa = { + enable = mkOption { + default = false; + type = types.bool; + description = "Wether to enable mesa specific configuration"; + example = true; + }; + optimized = mkOption { + default = generalCfg.unsafeOptimizations; + type = types.bool; + description = "Wether to enable (unsafe) mesa optimizations"; + example = false; + }; + package = mkOption { + internal = true; + default = pkgs.mesa; + type = packageWithDefaults; + description = "What mesa package to use"; + }; + package32 = mkOption { + internal = true; + default = pkgs.driversi686Linux.mesa; + type = packageWithDefaults; + description = "What mesa package to use"; + }; + }; + + config = mkIf cfg.enable { + programs.corectrl.enable = mkDefault config.hardware.opengl.enable; + + aviallon.hardware.mesa.package = mkIf cfg.optimized pkgs.mesaOptimized; + #aviallon.hardware.mesa.package32 = mkIf (mkDefault cfg.optimized pkgs.driversi686Linux.mesaOptimized); + + hardware.opengl = { + package = with pkgs; cfg.package.drivers; + package32 = with pkgs; cfg.package32.drivers; + }; + }; +} diff --git a/hardware/nvidia/opensource.nix b/hardware/nvidia/opensource.nix index faac202..0306891 100644 --- a/hardware/nvidia/opensource.nix +++ b/hardware/nvidia/opensource.nix @@ -14,5 +14,6 @@ in { "nouveau.config" = "NvBoost=1"; }; + aviallon.hardware.mesa.enable = mkDefault true; }; }