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