diff options
author | Vincent Ambo <mail@tazj.in> | 2022-02-18T11·32+0300 |
---|---|---|
committer | tazjin <tazjin@tvl.su> | 2022-02-18T11·39+0000 |
commit | ac6717fe3c5cf5ab6b495092e8dd4565a4242eac (patch) | |
tree | c1821ac105febfe6c144420aae2817fa6f21be83 /ops/modules/www/self-redirect.nix | |
parent | 5b701ad713072d9910b69396338a816039a810b3 (diff) |
fix(ops/modules/www): Make self-redirect to config a generic module r/3849
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
Diffstat (limited to 'ops/modules/www/self-redirect.nix')
-rw-r--r-- | ops/modules/www/self-redirect.nix | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/ops/modules/www/self-redirect.nix b/ops/modules/www/self-redirect.nix new file mode 100644 index 000000000000..5bf1627be99a --- /dev/null +++ b/ops/modules/www/self-redirect.nix @@ -0,0 +1,27 @@ +# 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}; + } + ''; + }; +} |