]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - modules/private/websites/tools/dav/default.nix
Move websites/tools to modules
[perso/Immae/Config/Nix.git] / modules / private / websites / tools / dav / default.nix
diff --git a/modules/private/websites/tools/dav/default.nix b/modules/private/websites/tools/dav/default.nix
new file mode 100644 (file)
index 0000000..fb0baae
--- /dev/null
@@ -0,0 +1,53 @@
+{ 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}
+          <Directory ${root}>
+            AllowOverride All
+            Options FollowSymlinks
+            Require all granted
+            DirectoryIndex index.html
+          </Directory>
+      '';
+    };
+    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.tools.modules = davical.apache.modules;
+
+    services.websites.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;
+  };
+}
+