nix-config/hosts/nixedo/modules/nginx/www.oliverdavies.uk/default.nix

113 lines
2.4 KiB
Nix
Raw Normal View History

2025-05-03 22:30:39 +01:00
{ config, ... }:
let
2025-05-03 22:30:39 +01:00
ports = config.homelab.ports;
port = ports.nginx-website-sculpin;
2025-05-03 22:57:57 +01:00
redirects = builtins.concatStringsSep "\n" (
map (r: "rewrite ^${r.from}/?$ ${r.to} redirect;") (import ./redirects.nix)
);
2025-04-29 23:54:55 +01:00
tome = {
root = "/var/www/vhosts/website-tome";
paths = [
2025-05-11 15:03:00 +01:00
"archive"
2025-04-29 23:54:55 +01:00
"core"
2025-05-11 15:03:00 +01:00
"daily/.+"
2025-04-29 23:54:55 +01:00
"examples"
2025-05-11 15:03:16 +01:00
"homelab"
"podcast/28-ai-tools-web-coding-luke-mccormick"
2025-05-12 19:12:17 +01:00
"rss/daily.xml"
2025-04-29 23:54:55 +01:00
"sites/default/files"
"themes/custom/opdavies"
"tome-test"
];
2025-05-03 22:30:39 +01:00
port = ports.nginx-website-tome;
2025-04-29 23:54:55 +01:00
};
tomeLocations = builtins.listToAttrs (
map (path: {
2025-05-11 15:03:00 +01:00
name = "~ ^/${path}";
value = {
2025-04-29 23:54:55 +01:00
root = tome.root;
tryFiles = "$uri $uri.html $uri/index.html =404";
};
2025-04-29 23:54:55 +01:00
}) 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;
2025-05-03 22:57:57 +01:00
${redirects}
'';
};
2025-04-29 15:00:05 +01:00
"oliverdavies.uk" = {
forceSSL = true;
globalRedirect = "www.oliverdavies.uk";
useACMEHost = "oliverdavies.uk";
};
2025-04-29 23:54:55 +01:00
"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}";
2025-04-29 23:54:55 +01:00
"tome.oliverdavies.uk" = "http://localhost:${toString tome.port}";
"www.oliverdavies.uk" = "http://localhost:${toString port}";
};
};
};
}