diff options
Diffstat (limited to 'modules/nixosModules/server/radicale.nix')
| -rw-r--r-- | modules/nixosModules/server/radicale.nix | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/modules/nixosModules/server/radicale.nix b/modules/nixosModules/server/radicale.nix new file mode 100644 index 0000000..7f62b70 --- /dev/null +++ b/modules/nixosModules/server/radicale.nix @@ -0,0 +1,45 @@ +{ + self, + lib, + ... +}: { + flake.nixosModules.radicale = {config, ...}: let + cfg = config.hostOptions.server; + in { + imports = [ + self.nixosModules.hostOptions + self.nixosModules.nginx + ]; + + services.radicale = { + enable = true; + settings = { + server.hosts = ["127.0.0.1:5232"]; + auth = { + type = "htpasswd"; + htpasswd_filename = "${cfg.dataPath}/radicale/users"; + htpasswd_encryption = "autodetect"; + }; + storage.filesystem_folder = "${cfg.dataPath}/radicale/calendars/"; + }; + }; + + users.users.radicale = { + isSystemUser = true; + group = "radicale"; + }; + users.groups.radicale = {}; + systemd.services.radicale.serviceConfig = { + DynamicUser = lib.mkForce false; + User = lib.mkForce "radicale"; + Group = lib.mkForce "radicale"; + ReadWritePaths = ["${cfg.dataPath}/arr/radicale/"]; + }; + + services.nginx.virtualHosts."radicale.${cfg.domain}" = { + enableACME = true; + forceSSL = true; + locations."/".proxyPass = "http://127.0.0.1:5232"; + }; + }; +} |
