{ lib , config , pkgs , ... }: with lib; let cfg = config.my.profiles.personal; in { options.my.profiles.personal.calendar = mkEnableOption "calendar"; config = mkIf cfg.contacts { environment.persistence."/persist".users.moritz.directories = [ ".local/share/vdirsyncer/" ]; home-manager.users.moritz = { programs.khal.enable = true; programs.vdirsyncer.enable = true; services.vdirsyncer.enable = true; accounts.calendar = { basePath = "Documents/Calendar"; accounts.personal = { local = { type = "filesystem"; fileExt = ".ics"; }; remote = { passwordCommand = [ "cat" "/run/agenix/nextcloud" ]; url = "https://nextcloud.moritzboeh.me/remote.php/dav"; type = "caldav"; userName = "moritz"; }; primaryCollection = "personal"; khal.enable = true; khal.type = "discover"; vdirsyncer.enable = true; vdirsyncer.collections = [ "personal" # Personal "einkaufsliste" # Einkaufsliste "9b8be6f3-d85c-4c1e-b006-00910f56bf5d" # Tasks "contact_birthdays" # Contact birthdays "f71a1a0f-08c5-45de-84e8-e7f16b748ba5" # Uni "32c96d6f-a575-48b1-949a-6ae548f7a779" # Work ]; }; }; }; age.secrets.nextcloud = { file = ../../secrets/nextcloud.age; owner = "1000"; }; }; }