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