{ final, prev, ... }: {
  etesync-dav = prev.python3Packages.buildPythonApplication rec {
    pname = "etesync-dav";
    version = "0.33.4";

    src = prev.fetchFromGitHub {
      owner = "etesync";
      repo = "etesync-dav";
      rev = "v${version}";
      hash = "sha256-g+rK762tSWPDaBsaTwpTzfK/lqVs+Z/Qrpq2HCpipQE=";
    };

    dependencies = with prev.python3Packages; [
      appdirs
      etebase
      etesync
      flask
      flask-wtf
      msgpack
      setuptools
      (toPythonModule (buildPythonApplication rec {
        pname = "radicale";
        version = "3.2.3";
        pyproject = true;

        src = prev.fetchFromGitHub {
          owner = "Kozea";
          repo = "Radicale";
          rev = "refs/tags/v${version}";
          hash = "sha256-1IlnXVetQQuKBt6+QVKNeMM6qBQAiUhqc+4x3xOnSdE=";
        };

        build-system = [
          setuptools
        ];

        dependencies =
          [
            defusedxml
            passlib
            vobject
            pika
            python-dateutil
            pytz # https://github.com/Kozea/Radicale/issues/816
          ]
          ++ passlib.optional-dependencies.bcrypt;

        doCheck = false;
      }))
      requests
      types-setuptools
      requests.optional-dependencies.socks
    ];

    doCheck = false;
  };
}