{ config, ... }: let inherit (config.networking) domain fqdn; inherit (import ../../../data) ulaPrefix; in { security.pki.certificateFiles = [ ./ca.crt ]; services.caddy = { enable = true; globalConfig = '' pki { ca home { name "Home CA" intermediate_lifetime 28d } } skip_install_trust ''; virtualHosts = { "${fqdn}" = { extraConfig = '' tls { issuer internal { ca home } } ''; }; "acme.${domain}" = { extraConfig = '' tls { issuer internal { ca home } } acme_server { ca home lifetime 48h allow { domains *.test *.${domain} ip_ranges 10.0.0.0/8 ${ulaPrefix}::/48 fe80::/16 } } ''; }; "ca.${domain}" = { # cd /var/lib/caddy && install -D -m 444 .local/share/caddy/pki/authorities/home/root.crt ca/root.crt serverAliases = [ "ca.${domain}" "http://ca.${domain}" ]; extraConfig = '' tls { issuer internal { ca home } } root /var/lib/caddy/ca file_server browse ''; }; }; }; services.dnsmasq.settings.cname = [ "acme.${domain},ca.${domain},${fqdn}" ]; }