{ 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 [ "resume.coded.codes" "resume.thecoded.prof" ] (ReverseProxy "coded:1024"))
    (Hosts [ "vaultwarden.clicks.codes" "passwords.clicks.codes" ] (ReverseProxy "generic:1028"))
    (Hosts [
      "erpnext.clicks.codes"
      "projects.clicks.codes"
      "tasks.clicks.codes"
      "issues.clicks.codes"
      "kanban.clicks.codes"
      "taiga.clicks.codes"
    ] (Redirect "https://frappe.clicks.codes/app"))
    (Hosts [
      "wiki.clicks.codes"
    ] (Redirect "https://frappe.clicks.codes/wiki"))
    (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.element-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;
            "UIFeature.passwordReset" = false;
            "UIFeature.deactivate" = false;
          };
          show_labs_settings = true;
          default_theme = "dark";
          disable_guests = true;
          disable_3pid_login = true;
          logout_redirect_url = "https://login.clicks.codes/realms/master/protocol/openid-connect/logout?client_id=matrix";
          sso_redirect_options.immediate = 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"
    ])
  ];
}
