feat(hardware): add cpu module (intel/amd)
This commit is contained in:
parent
38232074d6
commit
eb93983bfe
3 changed files with 81 additions and 0 deletions
43
system/modules/hardware/cpu/amd/default.nix
Normal file
43
system/modules/hardware/cpu/amd/default.nix
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
{ lib, config, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (lib) mkMerge mkEnableOption mkIf versionAtLeast versionOlder;
|
||||||
|
hardware = config.systemModules.hardware.cpu;
|
||||||
|
cfg = hardware.amd;
|
||||||
|
kernelVersion = config.kernelPackages.kernel.version;
|
||||||
|
kernelVersionAtLeast = versionAtLeast kernelVersion;
|
||||||
|
kernelVersionOlder= versionOlder kernelVersion;
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
options.systemModules.hardware.cpu.amd = {
|
||||||
|
pstate.enable = mkEnableOption "Enable pstate amd module";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf (builtins.elem hardware.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"];
|
||||||
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
18
system/modules/hardware/cpu/default.nix
Normal file
18
system/modules/hardware/cpu/default.nix
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
{ lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (lib) types mkOption;
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./amd
|
||||||
|
./intel
|
||||||
|
];
|
||||||
|
|
||||||
|
options.systemModules.hardware.cpu.type = mkOption {
|
||||||
|
type = with types; nullOr (enum ["intel" "amd"]);
|
||||||
|
default = null;
|
||||||
|
description = "Type of cpu system module to use";
|
||||||
|
};
|
||||||
|
}
|
||||||
20
system/modules/hardware/cpu/intel/default.nix
Normal file
20
system/modules/hardware/cpu/intel/default.nix
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (lib) mkIf;
|
||||||
|
inherit (builtins) elem;
|
||||||
|
hardware = config.systemModules.hardware.cpu;
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
# TODO: put kvm/gvt behind virtualization module flag
|
||||||
|
|
||||||
|
config = mkIf (elem hardware.type ["intel"]) {
|
||||||
|
boot = {
|
||||||
|
kernelModules = ["kvm-intel"];
|
||||||
|
kernelParams = ["i915.fastboot=1" "enable_gvt=1"];
|
||||||
|
};
|
||||||
|
hardware.cpu.intel.updateMicrocode = true;
|
||||||
|
environment.systemPackages = [pkgs.intel-gpu-tools];
|
||||||
|
};
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue