summaryrefslogtreecommitdiff
path: root/pkgs/vdirsyncer-patch.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/vdirsyncer-patch.nix')
-rw-r--r--pkgs/vdirsyncer-patch.nix28
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
+
+'')
+ ];
+})