| 
									
										
										
										
											2022-11-09 22:15:47 +01:00
										 |  |  | # Dashboard site | 
					
						
							| 
									
										
										
										
											2024-07-28 21:08:02 +02:00
										 |  |  | { | 
					
						
							|  |  |  |   config, | 
					
						
							|  |  |  |   lib, | 
					
						
							|  |  |  |   pkgs, | 
					
						
							|  |  |  |   ... | 
					
						
							|  |  |  | }: | 
					
						
							| 
									
										
										
										
											2022-11-09 22:15:47 +01:00
										 |  |  | let | 
					
						
							|  |  |  |   cfg = config.my.services.homer; | 
					
						
							| 
									
										
										
										
											2023-11-07 23:13:51 +01:00
										 |  |  |   inherit (config.networking) domain; | 
					
						
							| 
									
										
										
										
											2022-01-23 23:35:00 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-09 22:15:47 +01:00
										 |  |  |   homeConfig = { | 
					
						
							|  |  |  |     title = "Dashboard"; | 
					
						
							|  |  |  |     header = false; | 
					
						
							|  |  |  |     footer = false; | 
					
						
							|  |  |  |     connectivityCheck = true; | 
					
						
							| 
									
										
										
										
											2023-06-22 20:54:16 +02:00
										 |  |  |     columns = "auto"; | 
					
						
							| 
									
										
										
										
											2022-11-09 22:15:47 +01:00
										 |  |  |     services = config.lib.webapps.homerServices; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | in | 
					
						
							| 
									
										
										
										
											2022-01-23 23:35:00 +01:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2024-07-28 21:08:02 +02:00
										 |  |  |   imports = [ ./config.nix ]; | 
					
						
							| 
									
										
										
										
											2022-11-09 22:15:47 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |   options.my.services.homer = with lib; { | 
					
						
							|  |  |  |     enable = mkEnableOption "Homer Dashboard"; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   config = lib.mkIf cfg.enable { | 
					
						
							|  |  |  |     services.nginx.virtualHosts = { | 
					
						
							|  |  |  |       # This is not a subdomain, cannot use my nginx wrapper module | 
					
						
							|  |  |  |       ${domain} = { | 
					
						
							|  |  |  |         forceSSL = true; | 
					
						
							|  |  |  |         useACMEHost = domain; | 
					
						
							|  |  |  |         root = pkgs.homer; | 
					
						
							|  |  |  |         locations."=/assets/config.yml" = { | 
					
						
							|  |  |  |           alias = pkgs.writeText "homerConfig.yml" (builtins.toJSON homeConfig); | 
					
						
							| 
									
										
										
										
											2022-01-23 23:35:00 +01:00
										 |  |  |         }; | 
					
						
							| 
									
										
										
										
											2022-11-09 22:15:47 +01:00
										 |  |  |       }; | 
					
						
							|  |  |  |       # redirect any other attempt to the main site | 
					
						
							|  |  |  |       "${domain}-redirect" = { | 
					
						
							|  |  |  |         forceSSL = true; | 
					
						
							|  |  |  |         useACMEHost = domain; | 
					
						
							|  |  |  |         default = true; | 
					
						
							|  |  |  |         globalRedirect = "${domain}"; | 
					
						
							|  |  |  |       }; | 
					
						
							| 
									
										
										
										
											2022-01-23 23:35:00 +01:00
										 |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-09 22:15:47 +01:00
										 |  |  |     webapps = { | 
					
						
							|  |  |  |       dashboardCategories = [ | 
					
						
							| 
									
										
										
										
											2024-07-28 21:08:02 +02:00
										 |  |  |         { | 
					
						
							|  |  |  |           name = "Applications"; | 
					
						
							|  |  |  |           tag = "app"; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |           name = "Media"; | 
					
						
							|  |  |  |           tag = "media"; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |           name = "Infrastructure"; | 
					
						
							|  |  |  |           tag = "infra"; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |           name = "Others"; | 
					
						
							|  |  |  |           tag = "other"; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2022-11-09 22:15:47 +01:00
										 |  |  |       ]; | 
					
						
							| 
									
										
										
										
											2022-01-23 23:35:00 +01:00
										 |  |  |     }; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | } |