1{ lib
2, stdenv
3, aiohttp
4, alexapy
5, async-timeout
6, buildPythonPackage
7, click
8, construct
9, dacite
10, fetchFromGitHub
11, paho-mqtt
12, poetry-core
13, pycryptodome
14, pycryptodomex
15, pytest-asyncio
16, pytestCheckHook
17, pythonOlder
18, pythonRelaxDepsHook
19}:
20
21buildPythonPackage rec {
22 pname = "python-roborock";
23 version = "0.33.2";
24 format = "pyproject";
25
26 disabled = pythonOlder "3.10";
27
28 src = fetchFromGitHub {
29 owner = "humbertogontijo";
30 repo = "python-roborock";
31 rev = "refs/tags/v${version}";
32 hash = "sha256-UAQlKfh6oljeWtEGYx7JiT1z9yFCAXRSlI4Ot6JUnoQ=";
33 };
34
35 pythonRelaxDeps = [
36 "pycryptodome"
37 ];
38
39 nativeBuildInputs = [
40 poetry-core
41 pythonRelaxDepsHook
42 ];
43
44 propagatedBuildInputs = [
45 alexapy
46 aiohttp
47 async-timeout
48 click
49 construct
50 dacite
51 paho-mqtt
52 pycryptodome
53 ] ++ lib.optionals stdenv.isDarwin [
54 pycryptodomex
55 ];
56
57 nativeCheckInputs = [
58 pytest-asyncio
59 pytestCheckHook
60 ];
61
62 pythonImportsCheck = [
63 "roborock"
64 ];
65
66 meta = with lib; {
67 description = "Python library & console tool for controlling Roborock vacuum";
68 homepage = "https://github.com/humbertogontijo/python-roborock";
69 changelog = "https://github.com/humbertogontijo/python-roborock/blob/v${version}/CHANGELOG.md";
70 license = licenses.gpl3Only;
71 maintainers = with maintainers; [ fab ];
72 };
73}