diff --git a/services/fediversity/garage.nix b/services/fediversity/garage.nix index c334afc1..5b1d32d9 100644 --- a/services/fediversity/garage.nix +++ b/services/fediversity/garage.nix @@ -14,6 +14,7 @@ let inherit (builtins) toString; inherit (lib) types mkOption mkEnableOption optionalString concatStringsSep; inherit (lib.strings) escapeShellArg; + inherit (lib.attrsets) filterAttrs mapAttrs'; cfg = config.services.garage; fedicfg = config.fediversity.internal.garage; concatMapAttrs = scriptFn: attrset: concatStringsSep "\n" (lib.mapAttrsToList scriptFn attrset); @@ -159,16 +160,23 @@ in }; }; - services.nginx.virtualHosts.${fedicfg.web.domainForBucket "pixelfed"} = { - forceSSL = true; - enableACME = true; - locations."/" = { - proxyPass = "http://localhost:3902"; - extraConfig = '' - proxy_set_header Host $host; - ''; - }; - }; + ## Create a proxy from .web.garage. to localhost:3902 for + ## each bucket that has `website = true`. + services.nginx.virtualHosts = + let + value = { + forceSSL = true; + enableACME = true; + locations."/" = { + proxyPass = "http://localhost:3902"; + extraConfig = '' + proxy_set_header Host $host; + ''; + }; + }; + in mapAttrs' + (bucket: _: {name = fedicfg.web.domainForBucket bucket; inherit value;}) + (filterAttrs (_: {website, ...}: website) cfg.ensureBuckets); systemd.services.ensure-garage = { after = [ "garage.service" ];