| 
									
										
										
										
											2024-05-05 13:07:24 +02:00
										 |  |  | { config, lib, ... }: | 
					
						
							| 
									
										
										
										
											2023-03-19 11:48:23 +01:00
										 |  |  | 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 { | 
					
						
							| 
									
										
										
										
											2024-07-28 21:08:02 +02:00
										 |  |  |       type = | 
					
						
							|  |  |  |         with types; | 
					
						
							|  |  |  |         nullOr (enum [ | 
					
						
							|  |  |  |           "intel" | 
					
						
							|  |  |  |           "amd" | 
					
						
							|  |  |  |         ]); | 
					
						
							| 
									
										
										
										
											2023-03-19 11:48:23 +01:00
										 |  |  |       default = null; | 
					
						
							|  |  |  |       example = "intel"; | 
					
						
							|  |  |  |       description = "Which kind of CPU to activate kernelModules"; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-28 21:08:02 +02:00
										 |  |  |   config = lib.mkIf cfg.enable ( | 
					
						
							|  |  |  |     lib.mkMerge [ | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         virtualisation.libvirtd.enable = true; | 
					
						
							| 
									
										
										
										
											2023-03-19 11:48:23 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-28 21:08:02 +02:00
										 |  |  |         programs.virt-manager.enable = true; | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2023-03-19 11:48:23 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-28 21:08:02 +02:00
										 |  |  |       # Intel CPU | 
					
						
							|  |  |  |       (lib.mkIf (cfg.cpuFlavor == "intel") { boot.kernelModules = [ "kvm-intel" ]; }) | 
					
						
							| 
									
										
										
										
											2023-03-19 11:48:23 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-28 21:08:02 +02:00
										 |  |  |       # AMD CPU | 
					
						
							|  |  |  |       (lib.mkIf (cfg.cpuFlavor == "amd") { boot.kernelModules = [ "kvm-amd" ]; }) | 
					
						
							|  |  |  |     ] | 
					
						
							|  |  |  |   ); | 
					
						
							| 
									
										
										
										
											2023-03-19 11:48:23 +01:00
										 |  |  | } |