{ config, lib, ... }: let cfg = config.services.caddy; vw = { domain = config.services.vaultwarden.domain; port = config.services.vaultwarden.config.ROCKET_PORT; }; in { services.caddy = { enable = true; virtualHosts = { "${vw.domain}" = { listenAddresses = [ "100.64.0.6" ]; extraConfig = '' tls {$CREDENTIALS_DIRECTORY}/sagittarius.cert {$CREDENTIALS_DIRECTORY}/sagittarius.key reverse_proxy :${toString vw.port} { header_up True-Client-IP {remote_host} header_up X-Real-IP {remote_host} } ''; }; }; }; systemd.services.caddy = lib.mkIf cfg.enable { serviceConfig.LoadCredential = [ "sagittarius.cert:/var/secrets/certs/sagittarius.crt" "sagittarius.key:/var/secrets/certs/sagittarius.key" ]; }; }