let
  hostname = "notify.liv.town";
  port = 2586;
  url = "https://" + hostname;
in
{
  services = {
    ntfy-sh = {
      enable = true;
      settings = {
        base-url = url;
        listen-http = "127.0.0.1:${toString port}";
        behind-proxy = true;
        visitor-attachment-daily-bandwidth-limit = "10M";
        visitor-request-limit-burst = 15;
        visitor-request-limit-replenish = "15s";
      };
    };
    nginx.virtualHosts.${hostname} = {
      forceSSL = true;
      sslCertificate = "/var/lib/acme/liv.town/cert.pem";
      sslCertificateKey = "/var/lib/acme/liv.town/key.pem";
      locations."/" = {
        proxyPass = "http://127.0.0.1:${toString port}";
        proxyWebsockets = true;
      };
    };
    frp.settings.proxies = [
      {
        name = "http";
        type = "tcp";
        localIP = "localhost";
        localPort = port;
        remotePort = port;
      }
    ];
  };
  networking.firewall.allowedTCPPorts = [ port ];
}
