{ 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";
    };
  };
}
