From 674c7ae9b02296819aaec5c1cd8e79579e455eea Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Thu, 5 Jan 2023 22:35:36 +0100 Subject: etesync-dav --- overlays/etesync-dav/default.nix | 55 ++++++++++++++++++++++++++++++++++ overlays/etesync-dav/etebase.nix | 64 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 overlays/etesync-dav/default.nix create mode 100644 overlays/etesync-dav/etebase.nix (limited to 'overlays') diff --git a/overlays/etesync-dav/default.nix b/overlays/etesync-dav/default.nix new file mode 100644 index 00000000..378fa753 --- /dev/null +++ b/overlays/etesync-dav/default.nix @@ -0,0 +1,55 @@ +{ final, prev, ... }: { + etesync-dav = + let + inherit (final) lib stdenv python39 radicale3 callPackage; + + python = python39.override { + packageOverrides = self: super: { + flask-wtf = super.flask-wtf.overridePythonAttrs (old: rec { + version = "0.15.1"; + src = old.src.override { + inherit version; + sha256 = "ff177185f891302dc253437fe63081e7a46a4e99aca61dfe086fb23e54fff2dc"; + }; + doCheck = false; + disabledTests = [ + "test_outside_request" + ]; + patches = [ ]; + }); + etebase = python.pkgs.callPackage ./etebase.nix { python39 = python; openssl = final.openssl_1_1; }; + }; + }; + 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 + setuptools + (python.pkgs.toPythonModule (radicale3.override { python3 = python; })) + requests + ] ++ requests.optional-dependencies.socks; + + doCheck = false; + + meta = with lib; { + homepage = "https://www.etesync.com/"; + description = "Secure, end-to-end encrypted, and privacy respecting sync for contacts, calendars and tasks"; + license = licenses.gpl3; + maintainers = with maintainers; [ thyol valodim ]; + broken = stdenv.isDarwin; # pyobjc-framework-Cocoa is missing + }; + }; +} diff --git a/overlays/etesync-dav/etebase.nix b/overlays/etesync-dav/etebase.nix new file mode 100644 index 00000000..8711725c --- /dev/null +++ b/overlays/etesync-dav/etebase.nix @@ -0,0 +1,64 @@ +{ lib +, stdenv +, fetchFromGitHub +, python39 +, rustPlatform +, pkg-config +, rustfmt +, setuptools-rust +, openssl +, msgpack +}: + +python39.pkgs.buildPythonPackage rec { + pname = "etebase"; + version = "0.31.6"; + + src = fetchFromGitHub { + owner = "etesync"; + repo = "etebase-py"; + rev = "v${version}"; + hash = "sha256-T61nPW3wjBRjmJ81w59T1b/Kxrwwqvyj3gILE9OF/5Q="; + }; + + cargoDeps = rustPlatform.fetchCargoTarball { + inherit src; + name = "${pname}-${version}"; + hash = "sha256-wrMNtcaLAsWBVeJbYbYo+Xmobl01lnUbR9NUqqUzUgU="; + }; + + format = "pyproject"; + + nativeBuildInputs = [ + pkg-config + rustfmt + setuptools-rust + ] ++ (with rustPlatform; [ + cargoSetupHook + rust.cargo + rust.rustc + ]); + + buildInputs = [ openssl ]; + + propagatedBuildInputs = [ + msgpack + ]; + + postPatch = '' + # Use system OpenSSL, which gets security updates. + substituteInPlace Cargo.toml \ + --replace ', features = ["vendored"]' "" + ''; + + pythonImportsCheck = [ "etebase" ]; + + + meta = with lib; { + broken = stdenv.isDarwin; + homepage = "https://www.etebase.com/"; + description = "A Python client library for Etebase"; + license = licenses.bsd3; + maintainers = with maintainers; [ _3699n thyol ]; + }; +} -- cgit v1.2.3