mirror of
https://github.com/CHN-beta/nixos.git
synced 2026-01-12 01:29:24 +08:00
30 lines
1.1 KiB
Nix
30 lines
1.1 KiB
Nix
inputs:
|
|
{
|
|
options.nixos.hardware.cpu = let inherit (inputs.lib) mkOption types; in mkOption
|
|
{
|
|
type = types.nullOr (types.enum [ "intel" "amd" ]);
|
|
default = let inherit (inputs.config.nixos.system.nixpkgs) march; in
|
|
if march == null then null
|
|
else if inputs.lib.hasInfix "znver" march then "amd"
|
|
else if (inputs.lib.hasInfix "lake" march)
|
|
|| (builtins.elem march [ "sandybridge" "silvermont" "haswell" "broadwell" ])
|
|
then "intel"
|
|
else null;
|
|
};
|
|
config = let inherit (inputs.config.nixos.hardware) cpu; in inputs.lib.mkIf (cpu != null) (inputs.lib.mkMerge
|
|
[
|
|
(inputs.lib.mkIf (cpu == "intel")
|
|
{
|
|
hardware.cpu.intel.updateMicrocode = true;
|
|
boot.initrd.availableKernelModules =
|
|
[ "intel_cstate" "aesni_intel" "intel_cstate" "intel_uncore" "intel_uncore_frequency" "intel_powerclamp" ];
|
|
})
|
|
(inputs.lib.mkIf (cpu == "amd")
|
|
{
|
|
hardware.cpu.amd = { updateMicrocode = true; ryzen-smu.enable = true; };
|
|
environment.systemPackages = with inputs.pkgs; [ zenmonitor ];
|
|
programs.ryzen-monitor-ng.enable = true;
|
|
})
|
|
]);
|
|
}
|