{ lib, pkgs, config, myconfig, ... }: let infcloud = rec { webappName = "tools_infcloud"; root = "/run/current-system/webapps/${webappName}"; vhostConf = '' Alias /carddavmate ${root} Alias /caldavzap ${root} Alias /infcloud ${root} AllowOverride All Options FollowSymlinks Require all granted DirectoryIndex index.html ''; }; davical = pkgs.callPackage ./davical.nix { env = myconfig.env.tools.davical; inherit (pkgs.webapps) davical awl; }; cfg = config.myServices.websites.tools.dav; in { options.myServices.websites.tools.dav = { enable = lib.mkEnableOption "enable dav website"; }; config = lib.mkIf cfg.enable { system.activationScripts.davical = davical.activationScript; secrets.keys = davical.keys; services.websites.env.tools.modules = davical.apache.modules; services.websites.env.tools.vhostConfs.dav = { certName = "eldiron"; addToCerts = true; hosts = ["dav.immae.eu" ]; root = null; extraConfig = [ infcloud.vhostConf davical.apache.vhostConf ]; }; services.phpfpm.poolConfigs = { davical = davical.phpFpm.pool; }; myServices.websites.webappDirs."${davical.apache.webappName}" = davical.webRoot; myServices.websites.webappDirs."${infcloud.webappName}" = pkgs.webapps.infcloud; }; }