nixpkgs/pkgs/development/python-modules/busylight-for-humans/default.nix

68 lines
1.5 KiB
Nix

{
lib,
buildPythonPackage,
fetchFromGitHub,
fetchpatch2,
poetry-core,
pytestCheckHook,
pytest-mock,
bitvector-for-humans,
hidapi,
loguru,
pyserial,
typer,
webcolors,
}:
buildPythonPackage rec {
pname = "busylight-for-humans";
version = "0.32.0";
pyproject = true;
src = fetchFromGitHub {
owner = "JnyJny";
repo = "busylight";
rev = version;
hash = "sha256-rdgkTk9x3bO5H01Bo2yOGIIxkoLv1k7kkJidJu/1HDQ=";
};
patches = [
(fetchpatch2 {
# https://github.com/JnyJny/busylight/pull/369
name = "fix-poetry-core.patch";
url = "https://github.com/helsinki-systems/busylight/commit/74ca283e2250564f422d904ece1b9ab0dd9a8f6c.patch";
hash = "sha256-eif9ycSYL8ZpXsvNCOHDJlpj12oauyzlMKUScZMzllc=";
})
];
build-system = [ poetry-core ];
dependencies = [
bitvector-for-humans
hidapi
loguru
pyserial
typer
webcolors
];
nativeCheckInputs = [
pytestCheckHook
pytest-mock
];
disabledTestPaths = [ "tests/test_pydantic_models.py" ];
pythonImportsCheck = [ "busylight" ];
postInstall = ''
mkdir -p $out/lib/udev/rules.d
$out/bin/busylight udev-rules -o $out/lib/udev/rules.d/99-busylight.rules
'';
meta = with lib; {
homepage = "https://github.com/JnyJny/busylight";
description = "Control USB connected presence lights from multiple vendors via the command-line or web API.";
mainProgram = "busylight";
license = licenses.asl20;
maintainers = teams.helsinki-systems.members;
};
}