nix-config/hosts/nixedo/modules/nginx/www.oliverdavies.uk/default.nix
2025-05-25 11:18:57 +01:00

113 lines
2.5 KiB
Nix

{ config, ... }:
let
ports = config.homelab.ports;
port = ports.nginx-website-sculpin;
redirects = builtins.concatStringsSep "\n" (
map (r: "rewrite ^${r.from}/?$ ${r.to} redirect;") (import ./redirects.nix)
);
tome = {
root = "/var/www/vhosts/website-tome";
paths = [
"archive"
"core"
"daily/.+"
"examples"
"homelab"
"podcast/28-ai-tools-web-coding-luke-mccormick"
"podcast/28-using-ai-tools-web-coding"
"rss/daily.xml"
"sites/default/files"
"themes/custom/opdavies"
"tome-test"
];
port = ports.nginx-website-tome;
};
tomeLocations = builtins.listToAttrs (
map (path: {
name = "~ ^/${path}";
value = {
root = tome.root;
tryFiles = "$uri $uri.html $uri/index.html =404";
};
}) tome.paths
);
in
{
services = {
nginx.virtualHosts = {
"www.oliverdavies.uk" = {
root = "/var/www/vhosts/website-sculpin";
listen = [
{
inherit port;
addr = "localhost";
}
];
locations = tomeLocations // {
"/".tryFiles = "$uri $uri.html $uri/index.html =404";
};
extraConfig = ''
port_in_redirect off;
# Remove trailing slashes.
rewrite ^/(.*)/$ /$1 permanent;
error_page 404 /404;
rewrite ^/talks/archive/?$ /talks permanent;
rewrite ^/talks/(.*)$ /presentations/$1 permanent;
rewrite ^/talks/?$ /presentations permanent;
${redirects}
'';
};
"oliverdavies.uk" = {
forceSSL = true;
globalRedirect = "www.oliverdavies.uk";
useACMEHost = "oliverdavies.uk";
};
"tome.oliverdavies.uk" = {
listen = [
{
addr = "localhost";
port = tome.port;
}
];
locations."/".tryFiles = "$uri $uri.html $uri/index.html =404";
root = tome.root;
extraConfig = ''
add_header X-Robots-Tag "noindex, nofollow";
port_in_redirect off;
# Remove trailing slashes.
rewrite ^/(.*)/$ /$1 permanent;
'';
};
};
cloudflared.tunnels."e1514105-327f-4984-974e-e2fbaca76466" = {
ingress = {
"oliverdavies.uk" = "http://localhost:${toString port}";
"tome.oliverdavies.uk" = "http://localhost:${toString tome.port}";
"www.oliverdavies.uk" = "http://localhost:${toString port}";
};
};
};
}