1{
2 lib,
3 bitvector-for-humans,
4 buildPythonPackage,
5 fetchFromGitHub,
6 hidapi,
7 loguru,
8 poetry-core,
9 pyserial,
10 pytest-mock,
11 pytestCheckHook,
12 pythonOlder,
13 typer,
14 webcolors,
15 udevCheckHook,
16}:
17
18buildPythonPackage rec {
19 pname = "busylight-for-humans";
20 version = "0.35.2";
21 pyproject = true;
22
23 disabled = pythonOlder "3.9";
24
25 src = fetchFromGitHub {
26 owner = "JnyJny";
27 repo = "busylight";
28 tag = "v${version}";
29 hash = "sha256-0jmaVMN4wwqoO5wGMaV4kJefNUPOuJpWbsqHcZZ0Nh4=";
30 };
31
32 build-system = [ poetry-core ];
33
34 dependencies = [
35 bitvector-for-humans
36 hidapi
37 loguru
38 pyserial
39 typer
40 webcolors
41 ];
42
43 nativeCheckInputs = [
44 pytestCheckHook
45 pytest-mock
46 udevCheckHook
47 ];
48
49 disabledTestPaths = [ "tests/test_pydantic_models.py" ];
50
51 pythonImportsCheck = [ "busylight" ];
52
53 postInstall = ''
54 mkdir -p $out/lib/udev/rules.d
55 $out/bin/busylight udev-rules -o $out/lib/udev/rules.d/99-busylight.rules
56 '';
57
58 meta = with lib; {
59 description = "Control USB connected presence lights from multiple vendors via the command-line or web API";
60 homepage = "https://github.com/JnyJny/busylight";
61 changelog = "https://github.com/JnyJny/busylight/releases/tag/${version}";
62 license = licenses.asl20;
63 teams = [ teams.helsinki-systems ];
64 mainProgram = "busylight";
65 };
66}