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