nix-config/modules/server/home02/oliverdavies-uk/default.nix
Oliver Davies 83b056bc08
Some checks are pending
/ check (push) Waiting to run
Remove tome pages
2025-11-20 22:29:29 +00:00

69 lines
1.7 KiB
Nix

{
flake.modules.nixos.nginx-oliverdavies-uk =
{ config, ... }:
let
domain = "oliverdavies.uk";
port = 9098;
redirects = builtins.concatStringsSep "\n" (
map (r: "rewrite ^${r.from}/?$ ${r.to} redirect;") (import ./_redirects.nix)
);
in
{
security.acme = {
acceptTerms = true;
certs.${domain} = {
dnsProvider = "cloudflare";
domain = "${domain}";
email = "oliver@oliverdavies.uk";
environmentFile = config.age.secrets.cloudflare.path;
extraDomainNames = [ "www.${domain}" ];
webroot = null;
};
};
services.nginx = {
enable = true;
virtualHosts."www.${domain}" = {
root = "/var/www/vhosts/website-sculpin";
listen = [
{
inherit port;
addr = "localhost";
}
];
locations."/".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}
'';
};
};
services.cloudflared = {
enable = true;
tunnels."c1537889-81ac-4d41-b80d-9657f8db30c7" = {
credentialsFile = config.age.secrets.cloudflared.path;
default = "http_status:404";
ingress."www.${domain}" = "http://localhost:${toString port}";
};
};
};
}