{ lib , config , pkgs , ... }: with lib; let cfg = config.my.profiles.personal; in { options.my.profiles.personal.contacts = mkEnableOption "contacts"; config = mkIf cfg.contacts { environment.persistence."/persist".users.moritz.directories = mkIf (!cfg.calendar) [ ".local/share/vdirsyncer/" ]; home-manager.users.moritz = { programs.khard.enable = true; programs.vdirsyncer.enable = true; services.vdirsyncer.enable = true; programs.aerc.extraConfig.compose.address-book-cmd = "khard email --remove-first-line --parsable %s"; accounts.contact = { basePath = "Documents/Contacts"; accounts.personal = { local = { type = "filesystem"; fileExt = ".vcf"; }; remote = { passwordCommand = [ "cat" "/run/agenix/nextcloud" ]; url = "https://nextcloud.moritzboeh.me/remote.php/dav"; type = "carddav"; userName = "moritz"; }; khard.enable = true; khard.defaultCollection = "contacts"; vdirsyncer.enable = true; vdirsyncer.collections = [ # "z-app-generated--contactsinteraction--recent" # Recently contacted # "z-server-generated--system" # Accounts "contacts" # Contacts ]; vdirsyncer.conflictResolution = [ "vimdiff" ]; }; }; }; age.secrets.nextcloud = { file = ../../secrets/nextcloud.age; owner = "1000"; }; }; }