| 
									
										
										
										
											2025-04-28 22:32:38 +01:00
										 |  |  | { config, ... }: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-18 18:28:17 +01:00
										 |  |  | let | 
					
						
							| 
									
										
										
										
											2025-05-03 22:30:39 +01:00
										 |  |  |   sites = import ./sites.nix { ports = config.homelab.ports; }; | 
					
						
							| 
									
										
										
										
											2025-04-18 18:28:17 +01:00
										 |  |  | in | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   services = { | 
					
						
							|  |  |  |     nginx = { | 
					
						
							|  |  |  |       enable = true; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       virtualHosts = builtins.listToAttrs ( | 
					
						
							|  |  |  |         map (site: { | 
					
						
							|  |  |  |           name = site.url; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           value = { | 
					
						
							|  |  |  |             root = site.root; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             listen = [ | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 addr = "localhost"; | 
					
						
							|  |  |  |                 port = site.port; | 
					
						
							|  |  |  |               } | 
					
						
							|  |  |  |             ]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             locations."/".tryFiles = "$uri $uri/index.html =404"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             extraConfig = builtins.concatStringsSep "\n\n" [ | 
					
						
							|  |  |  |               site.extraConfig or "" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |               ''
 | 
					
						
							|  |  |  |                 port_in_redirect off; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 # Remove trailing slashes. | 
					
						
							|  |  |  |                 rewrite ^/(.*)/$ /$1 permanent; | 
					
						
							|  |  |  |               ''
 | 
					
						
							|  |  |  |             ]; | 
					
						
							|  |  |  |           }; | 
					
						
							|  |  |  |         }) sites | 
					
						
							|  |  |  |       ); | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     cloudflared.tunnels."e1514105-327f-4984-974e-e2fbaca76466" = { | 
					
						
							|  |  |  |       ingress = builtins.listToAttrs ( | 
					
						
							|  |  |  |         map (site: { | 
					
						
							|  |  |  |           name = site.url; | 
					
						
							|  |  |  |           value = "http://localhost:${toString site.port}"; | 
					
						
							|  |  |  |         }) sites | 
					
						
							|  |  |  |       ); | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-27 20:58:35 +01:00
										 |  |  |   users.users.${config.services.nginx.user}.extraGroups = [ "acme" ]; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-05-03 22:57:57 +01:00
										 |  |  |   imports = [ ./www.oliverdavies.uk ]; | 
					
						
							| 
									
										
										
										
											2025-04-18 18:28:17 +01:00
										 |  |  | } |