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