diff options
Diffstat (limited to 'pkgs/vdirsyncer-patch.nix')
| -rw-r--r-- | pkgs/vdirsyncer-patch.nix | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/pkgs/vdirsyncer-patch.nix b/pkgs/vdirsyncer-patch.nix new file mode 100644 index 0000000..9265e21 --- /dev/null +++ b/pkgs/vdirsyncer-patch.nix @@ -0,0 +1,28 @@ +# Patch vdirsyncer to skip NotFoundError on missing items instead of failing. +# This works around a Google CalDAV bug where recurring events with modified +# instances are listed but cannot be fetched. +# See: https://github.com/pimutils/vdirsyncer/issues/467 +{ lib, vdirsyncer }: + +vdirsyncer.overrideAttrs (oldAttrs: { + patches = (oldAttrs.patches or []) ++ [ + (builtins.toFile "skip-notfound.patch" '' +--- a/vdirsyncer/storage/dav.py ++++ b/vdirsyncer/storage/dav.py +@@ -550,8 +550,11 @@ class DAVStorage(Storage): + else: + rv.append((href, Item(raw), etag)) + for href in hrefs_left: +- raise exceptions.NotFoundError(href) +- ++ dav_logger.warning( ++ f"Skipping {href!r}, server listed but did not return it. " ++ "This is often caused by corrupted recurring events in Google Calendar." ++ ) ++ + for href, item, etag in rv: + yield href, item, etag + +'') + ]; +}) |
