As suggested by sterni, this makes the self-redirect of a machine to its configuration a generic module working by convention. In the process of moving this two small fixes have been applied: * redirect is only applied if the URI is `/`, this is required for ACME to work * addSSL = true is added, otherwise we have a certificate but no TLS listener Change-Id: Icaef041ff681253a61e36926417bdb2844e3f93d Reviewed-on: https://cl.tvl.fyi/c/depot/+/5313 Autosubmit: tazjin <tazjin@tvl.su> Reviewed-by: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI
		
			
				
	
	
		
			27 lines
		
	
	
	
		
			632 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
	
		
			632 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
# Redirect the hostname of a machine to its configuration in a web
 | 
						|
# browser.
 | 
						|
#
 | 
						|
# Works by convention, assuming that the machine has its configuration
 | 
						|
# at //ops/machines/${hostname}.
 | 
						|
{ config, ... }:
 | 
						|
 | 
						|
let
 | 
						|
  host = "${config.networking.hostName}.${config.networking.domain}";
 | 
						|
in
 | 
						|
{
 | 
						|
  imports = [
 | 
						|
    ./base.nix
 | 
						|
  ];
 | 
						|
 | 
						|
  config.services.nginx.virtualHosts."${host}" = {
 | 
						|
    serverName = host;
 | 
						|
    addSSL = true; # SSL is not forced on these redirects
 | 
						|
    enableACME = true;
 | 
						|
 | 
						|
    extraConfig = ''
 | 
						|
      location = / {
 | 
						|
        return 302 https://at.tvl.fyi/?q=%2F%2Fops%2Fmachines%2F${config.networking.hostName};
 | 
						|
      }
 | 
						|
    '';
 | 
						|
  };
 | 
						|
}
 |