1{ lib
2, buildPythonPackage
3, fetchFromGitHub
4, makePythonPath
5, pythonOlder
6, python
7, click
8, dbus-python
9, desktop-notifier
10, dropbox
11, fasteners
12, importlib-metadata
13, keyring
14, keyrings-alt
15, packaging
16, pathspec
17, pyro5
18, requests
19, rich
20, setuptools
21, survey
22, typing-extensions
23, watchdog
24, pytestCheckHook
25, nixosTests
26}:
27
28buildPythonPackage rec {
29 pname = "maestral";
30 version = "1.7.3";
31 format = "pyproject";
32
33 disabled = pythonOlder "3.7";
34
35 src = fetchFromGitHub {
36 owner = "SamSchott";
37 repo = "maestral";
38 rev = "refs/tags/v${version}";
39 hash = "sha256-HOM7BlrKpqm16plTMLFpC6VScEoMlxCJFhZ0mcIFIcE=";
40 };
41
42 propagatedBuildInputs = [
43 click
44 desktop-notifier
45 dbus-python
46 dropbox
47 fasteners
48 importlib-metadata
49 keyring
50 keyrings-alt
51 packaging
52 pathspec
53 pyro5
54 requests
55 rich
56 setuptools
57 survey
58 typing-extensions
59 watchdog
60 ];
61
62 makeWrapperArgs = [
63 # Add the installed directories to the python path so the daemon can find them
64 "--prefix PYTHONPATH : ${makePythonPath propagatedBuildInputs}"
65 "--prefix PYTHONPATH : $out/lib/${python.libPrefix}/site-packages"
66 ];
67
68 nativeCheckInputs = [
69 pytestCheckHook
70 ];
71
72 preCheck = ''
73 export HOME=$(mktemp -d)
74 '';
75
76 disabledTests = [
77 # We don't want to benchmark
78 "test_performance"
79 # Requires systemd
80 "test_autostart"
81 # Requires network access
82 "test_check_for_updates"
83 # Tries to look at /usr
84 "test_filestatus"
85 "test_path_exists_case_insensitive"
86 "test_cased_path_candidates"
87 # AssertionError
88 "test_locking_multiprocess"
89 ];
90
91 pythonImportsCheck = [
92 "maestral"
93 ];
94
95 passthru.tests.maestral = nixosTests.maestral;
96
97 meta = with lib; {
98 description = "Open-source Dropbox client for macOS and Linux";
99 homepage = "https://maestral.app";
100 changelog = "https://github.com/samschott/maestral/releases/tag/v${version}";
101 license = licenses.mit;
102 maintainers = with maintainers; [ peterhoeg sfrijters ];
103 platforms = platforms.unix;
104 };
105}