{ lib, pkgs, config, ... }: 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 = config.myEnv.tools.davical; inherit (pkgs.webapps) davical awl; inherit config; }; 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 = "/run/current-system/webapps/_dav"; extraConfig = [ infcloud.vhostConf (davical.apache.vhostConf config.services.phpfpm.pools.davical.socket) ]; }; services.phpfpm.pools = { davical = { user = config.services.httpd.Tools.user; group = config.services.httpd.Tools.group; settings = davical.phpFpm.pool; phpPackage = pkgs.php72; }; }; services.websites.webappDirs._dav = ./www; services.websites.webappDirs."${davical.apache.webappName}" = davical.webRoot; services.websites.webappDirs."${infcloud.webappName}" = pkgs.webapps.infcloud; }; }