feat(pstate): opt in changes and sooooo

This commit is contained in:
2025-09-29 19:28:33 +02:00
parent 725a3ed27e
commit 688e23d229
4 changed files with 45 additions and 37 deletions

View File

@@ -5,6 +5,7 @@
variant = "latest";
hardware = [ "amd" ];
extraKernelParams = [ ];
amdOverdrive.enable = true;
};
loader = {
default = {

View File

@@ -5,7 +5,12 @@
...
}:
let
inherit (lib) mkOption types;
inherit (lib)
mkOption
types
mkEnableOption
mkIf
;
cfg = config.nixos.boot.kernel;
hasHardware = hw: builtins.elem hw cfg.hardware;
@@ -37,8 +42,11 @@ in
);
default = [ ];
description = "List of hardware types (e.g. GPU and CPU vendors) to configure kernel settings for.";
};
amdOverdrive.enable = mkEnableOption "Enable AMD pstate/overdrive";
extraKernelParams = mkOption {
type = types.listOf types.str;
default = [ ];
@@ -74,7 +82,7 @@ in
"quiet"
"splash"
]
++ (if hasHardware "amd" then [ "amd_pstate=active" ] else [ ])
++ (if hasHardware "amd" then [ ] else [ ])
++ (if hasHardware "intel" then [ ] else [ ])
++ (if hasHardware "nvidia" then [ ] else [ ])
++ cfg.extraKernelParams;
@@ -85,5 +93,6 @@ in
++ (if hasHardware "nvidia" then [ "nouveau" ] else [ ])
++ cfg.extraBlacklistedModules;
};
hardware.amdgpu.overdrive.enable = mkIf cfg.amdOverdrive.enable true;
};
}

View File

@@ -89,37 +89,39 @@ in
config = mkIf cfg.enable (mkMerge [
{
hardware.graphics = {
enable = true;
enable32Bit = true;
extraPackages = flatten (
concatMap (
vendor:
if vendor == "amd" then
commonPackages ++ mesaVulkanPackages
else if vendor == "intel" then
commonPackages
++ mesaVulkanPackages
++ (with pkgs; [
vpl-gpu-rt
intel-media-driver
intel-compute-runtime
intel-vaapi-driver
])
else if vendor == "nvidia" then
commonPackages
++ (with pkgs; [
nvidiaOffloadScript
intel-media-driver
nvidia-vaapi-driver
vulkan-tools
])
else
[ ]
) cfg.vendors
);
hardware = {
graphics = {
enable = true;
enable32Bit = true;
extraPackages = flatten (
concatMap (
vendor:
if vendor == "amd" then
commonPackages ++ mesaVulkanPackages
else if vendor == "intel" then
commonPackages
++ mesaVulkanPackages
++ (with pkgs; [
vpl-gpu-rt
intel-media-driver
intel-compute-runtime
intel-vaapi-driver
])
else if vendor == "nvidia" then
commonPackages
++ (with pkgs; [
nvidiaOffloadScript
intel-media-driver
nvidia-vaapi-driver
vulkan-tools
])
else
[ ]
) cfg.vendors
);
extraPackages32 = flatten (concatMap (_: commonPackages32) cfg.vendors);
extraPackages32 = flatten (concatMap (_: commonPackages32) cfg.vendors);
};
};
environment.systemPackages = flatten (
@@ -145,10 +147,6 @@ in
);
}
(mkIf (hasVendor "amd") {
hardware.amdgpu.overdrive.enable = true;
})
(mkIf (hasVendor "nvidia") {
hardware.nvidia = {
package =

View File

@@ -132,7 +132,7 @@
enable = true;
};
syncthing = {
enable = true;
enable = false;
};
udiskie = {
enable = true;