{ pkgs, helpers, config, lib, ... }: {
  clicks.nginx.services = with helpers.nginx; [
    (Host "signup.hopescaramels.com" (ReverseProxy "caramels:1024"))
    (Host "freeflowtaekwondo.com" (ReverseProxy "generic:1026"))
    (Host "homebridge.coded.codes" (ReverseProxy "CodedPi:8581"))
    (Host "codedpc.coded.codes" (ReverseProxy "SamuelDesktop:3389"))
    (Host "testing.coded.codes" (ReverseProxy "SamuelDesktop:3000"))
    (Hosts [ "kavita.coded.codes" "reading.coded.codes" ]
      (ReverseProxy "127.0.0.1:5000"))
    (Host "clicks.codes" (Compose [
      (Path "/.well-known/matrix/"
        (File ./nginx/clicks.codes/.well-known/matrix))
      (ReverseProxy "127.0.0.1:3000")
    ]))
    (Hosts [ "vaultwarden.clicks.codes" "passwords.clicks.codes" ] (ReverseProxy "generic:1028"))
    (Host "login.clicks.codes" (ReverseProxy "127.0.0.1:9083"))
    (Hosts [
      "syncthing.clicks.codes"
      "syncthing.coded.codes"
      "syncthing.thecoded.prof"
      "syncthing.hopescaramels.com"
    ] (ReverseProxy "127.0.0.1:8384"))
    (Hosts [ "gerrit.clicks.codes" "git.clicks.codes" ]
      (ReverseProxy "generic:1024"))
    (Hosts [ "grafana.clicks.codes" "logs.clicks.codes" ]
      (ReverseProxy "127.0.0.1:9052"))
    (InsecureHosts [
      "mail.clicks.codes"
      "mail.coded.codes"
      "mail.hopescaramels.com"
      "autoconfig.coded.codes"
      "autoconfig.clicks.codes"
      "autoconfig.hopescaramels.com"
      "imap.coded.codes"
      "imap.clicks.codes"
      "imap.hopescaramels.com"
      "pop.coded.codes"
      "pop.clicks.codes"
      "pop.hopescaramels.com"
      "smtp.coded.codes"
      "smtp.clicks.codes"
      "smtp.hopescaramels.com"
    ] (ReverseProxy "generic:1026"))
    (Hosts ["matrix.clicks.codes" "matrix.coded.codes"] (Directory "${builtins.toString
      (pkgs.schildichat-web.override {
        conf = {
          default_server_config =
            lib.pipe ./nginx/clicks.codes/.well-known/matrix [
              builtins.readFile
              builtins.fromJSON
            ];
          features = {
            feature_report_to_moderators = true;
            feature_latex_maths = true;
            feature_pinning = true;
            feature_mjolnir = true;
            feature_presence_in_room_list = true;
            feature_custom_themes = true;
            feature_dehydration = true;
          };
          setting_defaults = { "fallbackICEServerAllowed" = true; };
          default_theme = "dark";
          disable_guests = true;
          disable_3pid_login = true;
        };
      })}"))
    (Host "api.clicks.codes"
      (Path "/nucleus/" (ReverseProxy "127.0.0.1:10000")))
    (Host "api.coded.codes"
      (Path "/nucleus/" (ReverseProxy "SamuelDesktop:10000")))
    (Host "coded.codes" (Compose [
      (Path "/.well-known/matrix/"
        (File ./nginx/clicks.codes/.well-known/matrix))
      (Redirect "https://clicks.codes$request_uri")
    ]))
    (Hosts ["matrix-backend.clicks.codes" "matrix-backend.coded.codes"] (Compose [
      (Path "/_synapse/admin/" (Status 403))
      (ReverseProxy "127.0.0.1:4527")
    ]))
  ];
  clicks.nginx.serviceAliases = with helpers.nginx; [
    (Aliases "nextcloud.clicks.codes" [
      "cloud.clicks.codes"
      "www.cloud.clicks.codes"
      "www.nextcloud.clicks.codes"
    ])
    (Aliases "privatebin" [
      "paste.clicks.codes"
      "paste.coded.codes"
      "paste.thecoded.prof"
      "paste.hopescaramels.com"
      "www.paste.clicks.codes"
      "www.paste.coded.codes"
      "www.paste.thecoded.prof"
      "www.paste.hopescaramels.com"
      "www.privatebin.clicks.codes"
    ])
  ];
}
