summaryrefslogtreecommitdiff
path: root/lib/calendars.nix
blob: 71ce616a463fcdd3af5b789407d32e21ad4760b0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
{...}:
let
  common = {
    vdirsyncer = {
      enable = true;
      auth = "basic";
      conflictResolution = "remote wins";
      metadata = [
        "displayname"
        "description"
      ];
      timeRange = {
        # sync 1 year before and after now
        start = "datetime.now() - timedelta(days=365)";
        end = "datetime.now() + timedelta(days=365)";
      };
    };
  };
in {
  accounts.calendar.basePath = "Calendars";
  accounts.calendar.accounts = {
    "bensima_personal" = {
      primaryCollection = "Unschedule";
      remote = {
        passwordCommand = ["pass" "cal.bensima.com"];
        type = "caldav";
        url = "https://cal.bensima.com";
        userName = "ben";
      };
      vdirsyncer = {
        inherit (common.vdirsyncer) metadata timeRange enable auth conflictResolution;
        collections = [
          "3e40534f-bfb9-b973-f615-f958a6361e95" # private
          "066441A6-B48F-439B-9BD0-5D0FA8F4CB6F" # ymca open swim
          "8fd24d42-2294-9bc3-cece-3922c7cd4d09" # cal.com scheduling
          "e2ad2353-f91e-76c9-fb0f-2c8722ed9d2a" # fasting schedule
        ];
      };
      khal = {
        enable = true;
        addresses = ["ben@bensima.com" "ben@bsima.me"];
        color = "#800080";
        type = "discover";
      };
    };

    "bensima_shared" = {
      remote = {
        passwordCommand = ["pass" "cal.bensima.com"];
        type = "caldav";
        url = "https://cal.bensima.com/shared/ben";
        userName = "ben";
      };
      vdirsyncer = common.vdirsyncer;
      khal = {
        enable = true;
        color = "#097969";
        type = "calendar";
      };
    };

    "icloud" = {
      remote = {
        passwordCommand = ["pass" "icloud.com/vdirsyncer"];
        type = "caldav";
        url = "https://caldav.icloud.com";
        userName = "bsima@icloud.com";
      };
      vdirsyncer = {
        inherit (common.vdirsyncer) metadata timeRange enable auth conflictResolution;
        collections = [
          "0962a74ab76a97543b485d2a583caa271042baab9d64437ae6c3bc8a50df1f08"
        ];
      };
      khal = {
        enable = true;
        color = "#FAA0A0";
        type = "discover";
      };
    };
  };

  programs.khal = {
    enable = true;
    locale = {
      # these need to match org-mode formats for khalel
      weeknumbers = "left";
      timeformat = "%H:%M";
      dateformat = "%Y-%m-%d";
      longdateformat = "%Y-%m-%d %a";
      datetimeformat = "%Y-%m-%d %H:%M";
      longdatetimeformat = "%Y-%m-%d %H:%M";
    };
  };

  programs.vdirsyncer.enable = true;
  services.vdirsyncer.enable = true;
}