{ 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"))
    (Host "clicks.codes" (Compose [
      (Path "/.well-known/matrix/"
        (CrossOrigin (File ./nginx/clicks.codes/.well-known/matrix)))
      (ReverseProxy "127.0.0.1:3000")
    ]))
    (Hosts [ "vaultwarden.clicks.codes" "passwords.clicks.codes" ] (ReverseProxy "generic:1028"))
    (Hosts [ "taiga.clicks.codes" "projects.clicks.codes" "tasks.clicks.codes" "issues.clicks.codes" "kanban.clicks.codes" ] (ReverseProxy "generic:1029"))
    (Host "login.clicks.codes" (ReverseProxy "127.0.0.1:9083"))
    (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 [
      "calibre.coded.codes"
      "books.coded.codes"
      "reading.coded.codes"
      "calibre.thecoded.prof"
      "books.thecoded.prof"
      "reading.thecoded.prof"
    ] (ReverseProxy "generic:1032"))
    (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/"
        (CrossOrigin (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 "generic:1030")
    ]))
    (Hosts ["matrix-sliding-sync.clicks.codes" "matrix-sliding-sync.coded.codes"]
      (ReverseProxy "generic:1031"))
  ];
  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"
    ])
  ];
}
