summaryrefslogtreecommitdiff
path: root/pkgs
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/cmdtree.nix7
-rw-r--r--pkgs/vdirsyncer-patch.nix28
2 files changed, 32 insertions, 3 deletions
diff --git a/pkgs/cmdtree.nix b/pkgs/cmdtree.nix
index 1c991bb..20254b3 100644
--- a/pkgs/cmdtree.nix
+++ b/pkgs/cmdtree.nix
@@ -1,9 +1,10 @@
-{stdenv, fetchgit, xorg }:
+{stdenv, fetchFromGitHub, xorg }:
stdenv.mkDerivation {
name = "cmdtree";
- src = fetchgit {
- url = "git://jb55.com/cmdtree";
+ src = fetchFromGitHub {
+ owner = "jb55";
+ repo = "cmdtree";
rev = "a7a1f07bfca23397d0d645cb7dbc3b7a63e521cb";
sha256 = "sha256-QPUJUNiLzva+Mtbhic/yv6u2VIFdXkiZCtSz4eWSxzc=";
};
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
+
+'')
+ ];
+})