{ 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"; }; doCheck = false; }); # 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.etebase.overridePythonAttrs (old: rec { inherit (sources.etebase-py) version src; cargoDeps = final.rustPlatform.importCargoLock { lockFile = ./Cargo.lock; outputHashes = { "flapigen-0.6.0-pre8" = "sha256-8KBhVgHn+UtrEtBQJEVTrx+h4IqhKTn9Csx6yBAV0RQ="; }; }; postUnpack = '' cp -v ${./Cargo.lock} source/Cargo.lock ''; # cargoDeps = final.rustPlatform.fetchCargoTarball { # inherit src; # name = "${old.pname}-${version}"; # hash = "sha256-K3w72eyBUy0mJ/FFCIN188M+XEIEK3HUZZyI8liLDis="; # }; }); }; }; in python.pkgs.buildPythonApplication rec { pname = "etesync-dav"; version = "0.32.1"; src = python.pkgs.fetchPypi { inherit pname version; hash = "sha256-pOLug5MnVdKaw5wedABewomID9LU0hZPCf4kZKKU1yA="; }; 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 }; }; }