55 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { config, ... }:
 | |
| 
 | |
| let
 | |
|   sites = import ./sites.nix { ports = config.homelab.ports; };
 | |
| 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
 | |
|       );
 | |
|     };
 | |
|   };
 | |
| 
 | |
|   users.users.${config.services.nginx.user}.extraGroups = [ "acme" ];
 | |
| 
 | |
|   imports = [ ./www.oliverdavies.uk ];
 | |
| }
 |