{ config, pkgs, lib, ... }: let exposeBtcpay = config.sovran_systemsOS.web.btcpayserver; in { services.caddy = { enable = true; user = "caddy"; group = "root"; configFile = "/run/caddy/Caddyfile"; }; systemd.services.caddy-generate-config = { description = "Generate Caddyfile from /var/lib/domains at runtime"; before = [ "caddy.service" ]; requiredBy = [ "caddy.service" ]; wantedBy = [ "multi-user.target" ]; serviceConfig = { Type = "oneshot"; RemainAfterExit = true; RuntimeDirectory = "caddy"; }; path = [ pkgs.coreutils ]; script = '' read_domain() { if [ -f "/var/lib/domains/$1" ]; then cat "/var/lib/domains/$1" else echo "" fi } MATRIX=$(read_domain matrix) WORDPRESS=$(read_domain wordpress) NEXTCLOUD=$(read_domain nextcloud) BTCPAY=$(read_domain btcpayserver) VAULTWARDEN=$(read_domain vaultwarden) HAVEN=$(read_domain haven) ACME_EMAIL=$(read_domain sslemail) # Start with global config cat > /run/caddy/Caddyfile <> /run/caddy/Caddyfile else cat >> /run/caddy/Caddyfile <> /run/caddy/Caddyfile <> /run/caddy/Caddyfile <> /run/caddy/Caddyfile <> /run/caddy/Caddyfile <> /run/caddy/Caddyfile <