| 
									
										
										
										
											2022-12-05 22:51:46 +01:00
										 |  |  | # Docker related settings | 
					
						
							| 
									
										
										
										
											2024-07-28 21:08:02 +02:00
										 |  |  | { | 
					
						
							|  |  |  |   config, | 
					
						
							|  |  |  |   lib, | 
					
						
							|  |  |  |   options, | 
					
						
							|  |  |  |   pkgs, | 
					
						
							|  |  |  |   ... | 
					
						
							|  |  |  | }: | 
					
						
							| 
									
										
										
										
											2022-12-05 22:51:46 +01:00
										 |  |  | let | 
					
						
							|  |  |  |   cfg = config.my.system.docker; | 
					
						
							|  |  |  | in | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   options.my.system.docker = with lib; { | 
					
						
							|  |  |  |     enable = mkEnableOption "docker configuration"; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   config = lib.mkIf cfg.enable { | 
					
						
							|  |  |  |     environment.systemPackages = with pkgs; [ | 
					
						
							|  |  |  |       docker | 
					
						
							|  |  |  |       docker-compose | 
					
						
							|  |  |  |     ]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     virtualisation.docker = { | 
					
						
							|  |  |  |       enable = true; | 
					
						
							|  |  |  |       autoPrune.enable = true; | 
					
						
							|  |  |  |     }; | 
					
						
							| 
									
										
										
										
											2023-06-03 23:11:57 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-12 23:36:30 +01:00
										 |  |  |     services = { | 
					
						
							|  |  |  |       cadvisor.enable = config.services.prometheus.enable; | 
					
						
							| 
									
										
										
										
											2023-06-03 23:11:57 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-12 23:36:30 +01:00
										 |  |  |       prometheus = { | 
					
						
							|  |  |  |         scrapeConfigs = [ | 
					
						
							|  |  |  |           { | 
					
						
							|  |  |  |             job_name = "docker"; | 
					
						
							|  |  |  |             static_configs = [ | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 targets = [ "127.0.0.1:${toString config.services.cadvisor.port}" ]; | 
					
						
							|  |  |  |                 labels = { | 
					
						
							|  |  |  |                   instance = config.networking.hostName; | 
					
						
							|  |  |  |                 }; | 
					
						
							|  |  |  |               } | 
					
						
							|  |  |  |             ]; | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         ]; | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  |       # dashboard untested | 
					
						
							|  |  |  |       grafana.provision = { | 
					
						
							|  |  |  |         dashboards.settings.providers = [ | 
					
						
							|  |  |  |           { | 
					
						
							|  |  |  |             name = "Docker"; | 
					
						
							|  |  |  |             options.path = pkgs.grafana-dashboards.cadvisor; | 
					
						
							|  |  |  |             disableDeletion = true; | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         ]; | 
					
						
							|  |  |  |       }; | 
					
						
							| 
									
										
										
										
											2023-06-03 23:11:57 +02:00
										 |  |  |     }; | 
					
						
							| 
									
										
										
										
											2022-12-05 22:51:46 +01:00
										 |  |  |   }; | 
					
						
							|  |  |  | } |