{ lib, pkgs, sources, ... }: let package = pkgs.callPackage ./package.nix { src = sources.metis; }; providers = { klub-reseau = "nuage.beta.rz.ens.wtf"; eleves-ens = "cloud.eleves.ens.fr"; frama-agenda = "framagenda.org"; }; nginxConf = { enableACME = true; forceSSL = true; root = package; locations = lib.mapAttrs' (name: attrs: lib.nameValuePair "/cal/${name}/" { extraConfig = '' proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass https://${ providers.${name} }/remote.php/dav/public-calendars/; ''; }) providers; }; in { services.nginx.virtualHosts = { "calendrier.eleves.ens.fr" = nginxConf; "calendrier.dgnum.eu" = nginxConf; }; }