1{
2 lib,
3 python3,
4 fetchFromGitHub,
5}:
6
7python3.pkgs.buildPythonApplication rec {
8 pname = "syncall";
9 version = "1.8.5";
10 format = "pyproject";
11
12 src = fetchFromGitHub {
13 owner = "bergercookie";
14 repo = "syncall";
15 rev = "v${version}";
16 hash = "sha256-f9WVZ1gpVG0wvIqoAkeaYBE4QsGXSqrYS4KyHy6S+0Q=";
17 };
18
19 postPatch = ''
20 substituteInPlace pyproject.toml \
21 --replace-fail 'loguru = "^0.5.3"' 'loguru = "^0.7"' \
22 --replace-fail 'PyYAML = "~5.3.1"' 'PyYAML = "^6.0"' \
23 --replace-fail 'bidict = "^0.21.2"' 'bidict = "^0.23"' \
24 --replace-fail 'typing = "^3.7.4"' '''
25 '';
26
27 nativeBuildInputs = [
28 python3.pkgs.poetry-core
29 python3.pkgs.poetry-dynamic-versioning
30 ];
31
32 propagatedBuildInputs = with python3.pkgs; [
33 bidict
34 bubop
35 click
36 item-synchronizer
37 loguru
38 python-dateutil
39 pyyaml
40 rfc3339
41 typing
42
43 # asana optional-dep
44 asana
45 # caldav optional-dep
46 caldav
47 icalendar
48 # fs optional-dep
49 xattr
50 # gkeep optional-dep
51 # gkeepapi is unavailable in nixpkgs
52 # google optional-dep
53 google-api-python-client
54 google-auth-oauthlib
55 # notion optional-dep
56 # FIXME: notion-client -- broken, doesn't build.
57 # taskwarrior optional-dep
58 taskw-ng
59 ];
60
61 postInstall = ''
62 # We do not support gkeep
63 rm $out/bin/tw_gkeep_sync
64 '';
65
66 pythonImportsCheck = [ "syncall" ];
67
68 meta = with lib; {
69 description = "Bi-directional synchronization between services such as Taskwarrior, Google Calendar, Notion, Asana, and more";
70 homepage = "https://github.com/bergercookie/syncall";
71 license = licenses.mit;
72 maintainers = with maintainers; [ raitobezarius ];
73 # Upstream issue making it practically unusable:
74 # https://github.com/bergercookie/syncall/issues/99
75 broken = true;
76 };
77}