1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 buildPythonPackage,
6 rustPlatform,
7 cargo,
8 pkg-config,
9 rustc,
10 rustfmt,
11 setuptools-rust,
12 openssl,
13 Security,
14 msgpack,
15}:
16
17buildPythonPackage rec {
18 pname = "etebase";
19 version = "0.31.6";
20
21 src = fetchFromGitHub {
22 owner = "etesync";
23 repo = "etebase-py";
24 rev = "v${version}";
25 hash = "sha256-T61nPW3wjBRjmJ81w59T1b/Kxrwwqvyj3gILE9OF/5Q=";
26 };
27
28 cargoDeps = rustPlatform.fetchCargoTarball {
29 inherit src;
30 name = "${pname}-${version}";
31 hash = "sha256-wrMNtcaLAsWBVeJbYbYo+Xmobl01lnUbR9NUqqUzUgU=";
32 };
33
34 format = "pyproject";
35
36 nativeBuildInputs = [
37 pkg-config
38 rustfmt
39 setuptools-rust
40 rustPlatform.cargoSetupHook
41 cargo
42 rustc
43 ];
44
45 buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ Security ];
46
47 propagatedBuildInputs = [ msgpack ];
48
49 postPatch = ''
50 # Use system OpenSSL, which gets security updates.
51 substituteInPlace Cargo.toml \
52 --replace ', features = ["vendored"]' ""
53 '';
54
55 pythonImportsCheck = [ "etebase" ];
56
57 meta = with lib; {
58 broken = stdenv.isDarwin;
59 homepage = "https://www.etebase.com/";
60 description = "A Python client library for Etebase";
61 license = licenses.bsd3;
62 maintainers = with maintainers; [ _3699n ];
63 };
64}