1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
{
lib,
stdenv,
buildPythonPackage,
fetchFromGitHub,
makePythonPath,
pythonOlder,
python,
click,
dbus-python,
desktop-notifier,
dropbox,
fasteners,
importlib-metadata,
keyring,
keyrings-alt,
packaging,
pathspec,
pyro5,
requests,
rich,
rubicon-objc,
setuptools,
survey,
typing-extensions,
watchdog,
xattr,
pytestCheckHook,
nixosTests,
}:
buildPythonPackage rec {
pname = "maestral";
version = "1.9.4";
pyproject = true;
disabled = pythonOlder "3.8";
src = fetchFromGitHub {
owner = "SamSchott";
repo = "maestral";
rev = "refs/tags/v${version}";
hash = "sha256-akh0COltpUU4Z4kfubg6A7k6W8ICoqVYkmFpMkTC8H8=";
};
build-system = [ setuptools ];
dependencies = [
click
desktop-notifier
dbus-python
dropbox
fasteners
importlib-metadata
keyring
keyrings-alt
packaging
pathspec
pyro5
requests
rich
setuptools
survey
typing-extensions
watchdog
xattr
] ++ lib.optionals stdenv.hostPlatform.isDarwin [ rubicon-objc ];
makeWrapperArgs = [
# Add the installed directories to the python path so the daemon can find them
"--prefix PYTHONPATH : ${makePythonPath dependencies}"
"--prefix PYTHONPATH : $out/${python.sitePackages}"
];
nativeCheckInputs = [ pytestCheckHook ];
# ModuleNotFoundError: No module named '_watchdog_fsevents'
doCheck = !(stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64);
preCheck = ''
export HOME=$(mktemp -d)
'';
disabledTests =
[
# We don't want to benchmark
"test_performance"
# Requires systemd
"test_autostart"
# Requires network access
"test_check_for_updates"
# Tries to look at /usr
"test_filestatus"
"test_path_exists_case_insensitive"
"test_cased_path_candidates"
# AssertionError
"test_locking_multiprocess"
# OSError: [Errno 95] Operation not supported
"test_move_preserves_xattrs"
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
# maetral daemon does not start but worked in real environment
"test_catching_non_ignored_events"
"test_connection"
"test_event_handler"
"test_fs_ignore_tree_creation"
"test_lifecycle"
"test_notify_level"
"test_notify_snooze"
"test_receiving_events"
"test_remote_exceptions"
"test_start_already_running"
"test_stop"
];
pythonImportsCheck = [ "maestral" ];
passthru.tests.maestral = nixosTests.maestral;
meta = with lib; {
description = "Open-source Dropbox client for macOS and Linux";
mainProgram = "maestral";
homepage = "https://maestral.app";
changelog = "https://github.com/samschott/maestral/releases/tag/v${version}";
license = licenses.mit;
maintainers = with maintainers; [
natsukium
peterhoeg
sfrijters
];
};
}
|