| 
									
										
										
										
											2025-05-03 22:30:39 +01:00
										 |  |  | { config, lib, ... }: | 
					
						
							| 
									
										
										
										
											2025-04-30 01:10:02 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | with lib; | 
					
						
							| 
									
										
										
										
											2025-04-28 00:36:43 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-30 01:10:02 +01:00
										 |  |  | let | 
					
						
							|  |  |  |   cfg = homelab.services.${service}; | 
					
						
							| 
									
										
										
										
											2025-05-03 16:50:27 +01:00
										 |  |  |   homelab = config.homelab; | 
					
						
							| 
									
										
										
										
											2025-04-30 01:10:02 +01:00
										 |  |  |   service = "homepage-dashboard"; | 
					
						
							|  |  |  | in | 
					
						
							| 
									
										
										
										
											2025-04-27 20:58:35 +01:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2025-05-03 16:50:27 +01:00
										 |  |  |   options.homelab.services.${service} = { | 
					
						
							| 
									
										
										
										
											2025-04-30 01:10:02 +01:00
										 |  |  |     enable = mkEnableOption "Enable ${service}"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     url = mkOption { | 
					
						
							| 
									
										
										
										
											2025-05-03 01:13:51 +01:00
										 |  |  |       default = "${config.networking.hostName}.${homelab.domain}"; | 
					
						
							| 
									
										
										
										
											2025-04-30 01:10:02 +01:00
										 |  |  |       type = types.str; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   config = mkIf cfg.enable { | 
					
						
							|  |  |  |     services = { | 
					
						
							|  |  |  |       ${service} = { | 
					
						
							| 
									
										
										
										
											2025-04-28 00:36:43 +01:00
										 |  |  |         enable = true; | 
					
						
							| 
									
										
										
										
											2025-05-03 22:30:39 +01:00
										 |  |  |         listenPort = homelab.ports.${service}; | 
					
						
							| 
									
										
										
										
											2025-04-28 00:36:43 +01:00
										 |  |  |         openFirewall = true; | 
					
						
							| 
									
										
										
										
											2025-04-27 20:58:35 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-30 12:29:10 +01:00
										 |  |  |         customCSS = ''
 | 
					
						
							| 
									
										
										
										
											2025-04-30 13:42:51 +01:00
										 |  |  |           #information-widgets { | 
					
						
							|  |  |  |             padding-left: 1.5rem; | 
					
						
							|  |  |  |             padding-right: 1.5rem; | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-30 12:29:10 +01:00
										 |  |  |           div#footer { | 
					
						
							|  |  |  |             display: none; | 
					
						
							|  |  |  |           } | 
					
						
							| 
									
										
										
										
											2025-04-30 13:42:51 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |           .services-group { | 
					
						
							|  |  |  |             margin-bottom: 3rem; | 
					
						
							|  |  |  |           } | 
					
						
							| 
									
										
										
										
											2025-04-30 12:29:10 +01:00
										 |  |  |         '';
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-30 11:58:59 +01:00
										 |  |  |         services = (import ./services.nix { inherit config lib; }); | 
					
						
							| 
									
										
										
										
											2025-04-30 12:29:10 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         settings = { | 
					
						
							|  |  |  |           headerStyle = "clean"; | 
					
						
							|  |  |  |           hideVersion = "true"; | 
					
						
							| 
									
										
										
										
											2025-04-30 13:42:51 +01:00
										 |  |  |           layout = (import ./layout.nix); | 
					
						
							| 
									
										
										
										
											2025-04-30 12:29:10 +01:00
										 |  |  |           statusStyle = "dot"; | 
					
						
							|  |  |  |         }; | 
					
						
							| 
									
										
										
										
											2025-04-28 00:36:43 +01:00
										 |  |  |       }; | 
					
						
							| 
									
										
										
										
											2025-04-27 20:58:35 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-30 13:42:51 +01:00
										 |  |  |       glances.enable = true; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-30 01:10:02 +01:00
										 |  |  |       nginx.virtualHosts.${cfg.url} = { | 
					
						
							| 
									
										
										
										
											2025-04-28 00:36:43 +01:00
										 |  |  |         forceSSL = true; | 
					
						
							| 
									
										
										
										
											2025-05-03 01:13:51 +01:00
										 |  |  |         useACMEHost = homelab.domain; | 
					
						
							| 
									
										
										
										
											2025-04-27 20:58:35 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-30 01:10:02 +01:00
										 |  |  |         locations."/".proxyPass = | 
					
						
							|  |  |  |           "http://localhost:${toString config.services.homepage-dashboard.listenPort}"; | 
					
						
							| 
									
										
										
										
											2025-04-28 00:36:43 +01:00
										 |  |  |       }; | 
					
						
							| 
									
										
										
										
											2025-04-27 20:58:35 +01:00
										 |  |  |     }; | 
					
						
							| 
									
										
										
										
											2025-04-30 01:10:02 +01:00
										 |  |  |   }; | 
					
						
							| 
									
										
										
										
											2025-04-27 20:58:35 +01:00
										 |  |  | } |