{ config, pkgs, ... }: { home.packages = [ (pkgs.writeShellScriptBin "vdirsyncer-ensure-pass" (builtins.readFile ./vdirsyncer-ensure-pass.sh)) ]; 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.enable = true; accounts.calendar = { basePath = "Calendar"; accounts = { main = let url = "dav.xenia.me.uk"; in { primary = true; primaryCollection = "personal"; local = { type = "filesystem"; fileExt = ".ics"; }; remote = { url = "https://${url}"; type = "caldav"; userName = "pixelifytica"; passwordCommand = [ "${pkgs.libsecret}/bin/secret-tool" "lookup" "url" "${url}" ]; }; 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; }; }; }; }; }