{ pkgs, config, ... }: { accounts.calendar = { basePath = "Calendar"; # Relative to home directory; automatically becomes ~/Calendar accounts.radicale = { primary = true; primaryCollection = null; # Set to a specific collection name if needed (e.g., "calendar") when multiple exist remote = { type = "caldav"; url = "https://dav.tammi.cc/petri.hienonen%40protonmail.com/2f799b52-3895-85b0-c2ec-dcd7e86f7073/"; userName = "petri.hienonen@protonmail.com"; passwordCommand = [ "${pkgs.coreutils}/bin/cat" "${config.age.secrets.radicale.path}" ]; }; local = { type = "filesystem"; fileExt = ".ics"; }; pimsync = { enable = true; }; khal = { enable = true; type = "discover"; # "discover" for multiple collections (treats local path as directory of calendars); use "calendar" for single }; }; }; accounts.contact = { basePath = "Contacts"; # Relative to home directory; automatically becomes ~/Contacts accounts.radicale = { remote = { type = "carddav"; url = "https://dav.tammi.cc/petri.hienonen%40protonmail.com/9fa208e5-d89a-dda5-bb59-f71f726b7866/"; userName = "petri.hienonen@protonmail.com"; passwordCommand = [ "${pkgs.coreutils}/bin/cat" "${config.age.secrets.radicale.path}" ]; }; local = { type = "filesystem"; fileExt = ".vcf"; }; pimsync = { enable = true; }; khard = { enable = true; }; }; }; programs.khal.enable = true; programs.khard.enable = true; programs.todoman.enable = true; # For tasks (VTODO); uses the calendar basePath to discover task lists programs.pimsync = { enable = true; settings = [ { name = "status_path"; params = [ "${config.xdg.dataHome}/pimsync/status" ]; } ]; }; services.pimsync = { enable = true; verbosity = "info"; }; }