{ config, pkgs, ... }:
{
  programs = {
    vdirsyncer.enable = true;
    khal = {
      enable = true;
      locale = {
        timeformat = "%H:%M";
        dateformat = "%Y-%m-%d";
        longdateformat = "%Y-%m-%d %a";
        datetimeformat = "%Y-%m-%d %H:%M";
        longdatetimeformat = "%Y-%m-%d %H:%M";
      };
    };
  };
  services.vdirsyncer = {
    inherit (config.programs.vdirsyncer) enable package;
    frequency = "*:0/30"; # Every 30 minutes
  };
  accounts.calendar = {
    basePath = "Calendar";
    accounts = {
      main =
        let
          url = "dav.xenia.me.uk";
        in
        {
          primary = true;
          primaryCollection = "personal";
          local = {
            type = "filesystem";
            fileExt = ".ics";
          };
          remote =
            let
              userName = "pixelifytica";
            in
            {
              inherit userName;
              url = "https://${url}";
              type = "caldav";
              passwordCommand = [
                "${pkgs.libsecret}/bin/secret-tool"
                "lookup"
                "url"
                "${url}"
                "user"
                "${userName}"
              ];
            };
          vdirsyncer = {
            inherit (config.programs.vdirsyncer) enable;
            auth = "basic";
            collections = [
              "personal"
              "work"
              "other"
            ];
            metadata = [ "displayname" ];
            timeRange = {
              start = "datetime.now() - timedelta(days=365)";
              end = "datetime.now() + timedelta(days=365)";
            };
          };
          khal = {
            inherit (config.programs.khal) enable;
            type = "discover";
            addresses = with config.accounts.email.accounts.proton; [ address ] ++ aliases;
          };
        };
    };
  };
}