{ config, pkgs, lib, ... }: let inherit (config.common.nginx) ssl ssl-optional; tryFiles = "$uri $uri.html $uri/ =404"; websiteConfig = '' error_page 403 /403.html; error_page 404 /404.html; location ^~ /.well-known { allow all; } location = /template.html { deny all; } location ~* "\.(nix|lock)" { deny all; } location ~ "/\..+" { deny all; } ''; mkWebsite = name: ssl // { locations."/" = { root = "/srv/web/${name}"; inherit tryFiles; extraConfig = websiteConfig; }; }; mkRedirect = from: to: ssl-optional // { globalRedirect = to; }; websites = lib.genAttrs [ "inx.moe" "stickers.inx.moe" ] mkWebsite; redirects = lib.mapAttrs mkRedirect { "nitter.inx.moe" = "twitter.com"; }; in { services.nginx.virtualHosts = websites // redirects // { "blahaj.inx.moe" = ssl-optional // { locations."/" = { tryFiles = "/Blahaj.png =404"; root = ./static; }; locations."/buy" = { return = "301 https://www.ikea.com/us/en/p/blahaj-soft-toy-shark-90373590/"; }; }; "files.inx.moe" = ssl // { locations."/" = { root = "/srv/web/files.inx.moe"; extraConfig = '' autoindex on; ''; }; }; }; }