40 lines
1.1 KiB
Nix
40 lines
1.1 KiB
Nix
{
|
|
lib,
|
|
config,
|
|
pkgs,
|
|
...
|
|
}: let
|
|
inherit (lib) mkMerge mkIf versionAtLeast versionOlder;
|
|
inherit (config.ooknet.hardware) cpu;
|
|
cfg = cpu.amd;
|
|
kernelVersion = config.boot.kernelPackages.kernel.version;
|
|
kernelVersionAtLeast = versionAtLeast kernelVersion;
|
|
kernelVersionOlder = versionOlder kernelVersion;
|
|
in {
|
|
config = mkIf (cpu.type == "amd") {
|
|
environment.systemPackages = [pkgs.amdctl];
|
|
hardware.cpu.amd.updateMicrocode = true;
|
|
boot = mkMerge [
|
|
{
|
|
kernelModules = [
|
|
"amd-pstate"
|
|
"amd-kvm" # virtulization
|
|
"msr" # required for amdctl
|
|
];
|
|
}
|
|
|
|
(mkIf (cfg.pstate.enable && (kernelVersionAtLeast "5.27") && (kernelVersionOlder "6.1")) {
|
|
kernelParams = ["initcall_blacklist-acpi_cpufreq_init"];
|
|
kernelModules = ["amd-pstate"];
|
|
})
|
|
|
|
(mkIf (cfg.pstate.enable && (kernelVersionAtLeast "6.1") && (kernelVersionOlder "6.3")) {
|
|
kernelParams = ["amd_pstate=passive"];
|
|
})
|
|
|
|
(mkIf (cfg.pstate.enable && (kernelVersionAtLeast "6.3")) {
|
|
kernelParams = ["amd_pstate=active"];
|
|
})
|
|
];
|
|
};
|
|
}
|