Extract mkVirtualHostConfig function

This commit is contained in:
SebastianStork 2025-06-06 21:52:34 +02:00
parent 4f72e57193
commit da9008c379

View file

@ -19,6 +19,17 @@ let
nonTailscaleHostsExist = lib.any (v: !isTailscaleDomain v.domain) (lib.attrValues virtualHosts); nonTailscaleHostsExist = lib.any (v: !isTailscaleDomain v.domain) (lib.attrValues virtualHosts);
getSubdomain = domain: domain |> lib.splitString "." |> lib.head; getSubdomain = domain: domain |> lib.splitString "." |> lib.head;
mkVirtualHostConfig = domain: port: {
logFormat = "output file ${config.services.caddy.logDir}/access-${domain}.log { mode 640 }";
extraConfig = ''
${lib.optionalString (isTailscaleDomain domain) ''
bind tailscale/${getSubdomain domain}
tailscale_auth
''}
reverse_proxy localhost:${toString port}
'';
};
in in
{ {
options.custom.services.caddy.virtualHosts = lib.mkOption { options.custom.services.caddy.virtualHosts = lib.mkOption {
@ -51,19 +62,11 @@ in
{ {
services.caddy = { services.caddy = {
enable = true; enable = true;
virtualHosts = lib.mapAttrs' ( virtualHosts =
_: value: virtualHosts
lib.nameValuePair value.domain { |> lib.mapAttrs' (
logFormat = "output file ${config.services.caddy.logDir}/access-${value.domain}.log { mode 640 }"; _: value: lib.nameValuePair value.domain (mkVirtualHostConfig value.domain value.port)
extraConfig = lib.concatStrings [ );
(lib.optionalString (isTailscaleDomain value.domain) ''
bind tailscale/${getSubdomain value.domain}
tailscale_auth
'')
"reverse_proxy localhost:${toString value.port}"
];
}
) virtualHosts;
}; };
networking.firewall.allowedTCPPorts = lib.mkIf nonTailscaleHostsExist [ networking.firewall.allowedTCPPorts = lib.mkIf nonTailscaleHostsExist [