{ final, prev, sources, ... }: { etesync-dav = let python = final.python3.override { packageOverrides = self: super: { # flask-wtf = super.flask-wtf.overridePythonAttrs (old: rec { # patches = []; # version = "0.15.1"; # src = old.src.override { # inherit version; # sha256 = "ff177185f891302dc253437fe63081e7a46a4e99aca61dfe086fb23e54fff2dc"; # }; # disabledTests = [ # "test_outside_request" # ]; # }); # wtforms = super.wtforms.overridePythonAttrs (old: rec { # version = "2.3.3"; # src = old.src.override { # inherit version; # sha256 = "81195de0ac94fbc8368abbaf9197b88c4f3ffd6c2719b5bf5fc9da744f3d829c"; # }; # checkPhase = '' # ${self.python.interpreter} tests/runtests.py # ''; # }); etebase = super.wtforms.overridePythonAttrs (old: rec { inherit (sources.etebase-py) version src; }); }; }; in python.pkgs.buildPythonApplication rec { pname = "etesync-dav"; version = "0.32.1"; src = python.pkgs.fetchPypi { inherit pname version; sha256 = "a4e2ee83932755d29ac39c1e74005ec289880fd2d4d2164f09fe2464a294d720"; }; propagatedBuildInputs = with python.pkgs; [ appdirs etebase etesync flask flask-wtf msgpack pysocks (python.pkgs.toPythonModule (final.radicale3.override { python3 = python; })) requests ] ++ requests.optional-dependencies.socks; doCheck = false; meta = with final.lib; { homepage = "https://www.etesync.com/"; description = "Secure, end-to-end encrypted, and privacy respecting sync for contacts, calendars and tasks"; license = licenses.gpl3; broken = final.stdenv.isDarwin; # pyobjc-framework-Cocoa is missing }; }; }