aboutsummaryrefslogtreecommitdiff
path: root/modules/calendar
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2026-03-21 22:59:10 +0530
committerAkshay Nair <phenax5@gmail.com>2026-03-21 22:59:10 +0530
commitc5d02e0c371ca71a9a668bc15dfc63aaf5dc28f9 (patch)
treeecc7a6fed9d52593a37514cae058e199bb8c04ff /modules/calendar
parenta254feb6191d9a20ddd6790229bc55e396cec25d (diff)
downloadhomeserver-nixos-config-c5d02e0c371ca71a9a668bc15dfc63aaf5dc28f9.tar.gz
homeserver-nixos-config-c5d02e0c371ca71a9a668bc15dfc63aaf5dc28f9.zip
Caldav server + ical sync service
Diffstat (limited to 'modules/calendar')
-rw-r--r--modules/calendar/default.nix7
-rw-r--r--modules/calendar/ical-sync.nix14
-rw-r--r--modules/calendar/radicale.nix31
3 files changed, 52 insertions, 0 deletions
diff --git a/modules/calendar/default.nix b/modules/calendar/default.nix
new file mode 100644
index 0000000..5728da5
--- /dev/null
+++ b/modules/calendar/default.nix
@@ -0,0 +1,7 @@
+{ ... }:
+{
+ imports = [
+ ./radicale.nix
+ ./ical-sync.nix
+ ];
+}
diff --git a/modules/calendar/ical-sync.nix b/modules/calendar/ical-sync.nix
new file mode 100644
index 0000000..a318334
--- /dev/null
+++ b/modules/calendar/ical-sync.nix
@@ -0,0 +1,14 @@
+{ settings, ... }:
+{
+ imports = [ ../../services/icaldav.service.nix ];
+
+ services.icaldavsync = {
+ enable = true;
+ syncFrequency = "*:0/30";
+ icalLink = settings.calendar.icalLink;
+ caldavServerUrl = "http://127.0.0.1:${toString settings.network.ports.caldav}";
+ password = "pass";
+ user = "joe";
+ calendar = "Work";
+ };
+}
diff --git a/modules/calendar/radicale.nix b/modules/calendar/radicale.nix
new file mode 100644
index 0000000..cb2aa1f
--- /dev/null
+++ b/modules/calendar/radicale.nix
@@ -0,0 +1,31 @@
+{ settings, ... }:
+let
+ radicaleDir = "/var/lib/radicale/collections";
+ radicalePort = settings.network.ports.caldav;
+in
+{
+ systemd.tmpfiles.rules = [
+ "d ${radicaleDir} 0755 - radicale - -"
+ ];
+
+ services.radicale = {
+ enable = true;
+ settings = {
+ server = {
+ hosts = [
+ "0.0.0.0:${toString radicalePort}"
+ "[::]:${toString radicalePort}"
+ ];
+ };
+ auth = {
+ type = "none";
+ };
+ web = {
+ type = "internal";
+ };
+ storage = {
+ filesystem_folder = radicaleDir;
+ };
+ };
+ };
+}