{ config, pkgs, ... }: let calPath = config.xdg.userDirs.extraConfig.XDG_CAL_DIR; calsync = pkgs.writeShellApplication { name = "calsync"; text = '' if ! ${pkgs.vdirsyncer}/bin/vdirsyncer sync then read -rsp "Press key to continue..." -n1 fi ''; }; in { accounts.calendar.basePath = calPath; services.backup.paths = [ calPath ]; home.packages = [ calsync # Synchronize calendar events ]; programs.vdirsyncer.enable = true; programs.khal = { enable = true; locale = { dateformat = "%d/%m"; datetimeformat = "%d/%m %H:%M"; longdateformat = "%d/%m/%Y"; longdatetimeformat = "%d/%m/%Y %H:%M"; timeformat = "%H:%M"; weeknumbers = "right"; }; settings = { default = { highlight_event_days = true; show_all_days = false; timedelta = "7d"; }; highlight_days = { method = "fg"; }; keybindings = { external_edit = "E"; }; view = { agenda_event_format = "{calendar-color}{cancelled}{start-end-time-style} {title} {repeat-symbol}{reset}"; bold_for_light_color = false; event_format = "{calendar-color}{cancelled} {start}-{end} {title} {repeat-symbol}{reset}"; event_view_always_visible = true; frame = "color"; }; }; }; xdg.configFile."mailcap/mailcap".text = '' text/calendar; khal import %s; needsterminal; application/ics; khal import %s; needsterminal; ''; programs.kitty.keybindings = let leader = "ctrl+space"; in { "${leader}>o>k" = "launch --type=overlay ikhal"; "${leader}>s>c" = "launch --keep-focus --location=hsplit ${calsync}/bin/calsync"; }; }