| 
									
										
										
										
											2023-03-19 11:48:23 +01:00
										 |  |  | { config, lib, pkgs, ... }: | 
					
						
							|  |  |  | let | 
					
						
							| 
									
										
										
										
											2023-03-27 00:33:31 +02:00
										 |  |  |   cfg = config.my.system.kvm; | 
					
						
							| 
									
										
										
										
											2023-03-19 11:48:23 +01:00
										 |  |  | in | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2023-03-27 00:33:31 +02:00
										 |  |  |   options.my.system.kvm = with lib; { | 
					
						
							|  |  |  |     enable = mkEnableOption "kvm configuration"; | 
					
						
							| 
									
										
										
										
											2023-03-19 11:48:23 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     cpuFlavor = mkOption { | 
					
						
							|  |  |  |       type = with types; nullOr (enum [ "intel" "amd" ]); | 
					
						
							|  |  |  |       default = null; | 
					
						
							|  |  |  |       example = "intel"; | 
					
						
							|  |  |  |       description = "Which kind of CPU to activate kernelModules"; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   config = lib.mkIf cfg.enable (lib.mkMerge [ | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |       virtualisation.libvirtd.enable = true; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       environment.systemPackages = with pkgs; [ | 
					
						
							|  |  |  |         virtmanager | 
					
						
							|  |  |  |       ]; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # Intel CPU | 
					
						
							|  |  |  |     (lib.mkIf (cfg.cpuFlavor == "intel") { | 
					
						
							|  |  |  |       boot.kernelModules = [ | 
					
						
							|  |  |  |         "kvm-intel" | 
					
						
							|  |  |  |       ]; | 
					
						
							|  |  |  |     }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # AMD CPU | 
					
						
							|  |  |  |     (lib.mkIf (cfg.cpuFlavor == "amd") { | 
					
						
							|  |  |  |       boot.kernelModules = [ | 
					
						
							|  |  |  |         "kvm-amd" | 
					
						
							|  |  |  |       ]; | 
					
						
							|  |  |  |     }) | 
					
						
							|  |  |  |   ]); | 
					
						
							|  |  |  | } |