nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 base36,
4 buildPythonPackage,
5 chacha20poly1305-reuseable,
6 cryptography,
7 fetchFromGitHub,
8 h11,
9 orjson,
10 pyqrcode,
11 pytest-asyncio,
12 pytest-timeout,
13 pytestCheckHook,
14 pythonAtLeast,
15 pythonOlder,
16 setuptools,
17 zeroconf,
18}:
19
20buildPythonPackage (finalAttrs: {
21 pname = "hap-python";
22 version = "5.0.0";
23 pyproject = true;
24
25 src = fetchFromGitHub {
26 owner = "ikalchev";
27 repo = "HAP-python";
28 tag = finalAttrs.version;
29 hash = "sha256-+EhxoO5X/ANGh008WE0sJeBsu8SRnuds3hXGxNWpKnk=";
30 };
31
32 build-system = [ setuptools ];
33
34 dependencies = [
35 chacha20poly1305-reuseable
36 cryptography
37 h11
38 orjson
39 zeroconf
40 ];
41
42 optional-dependencies.QRCode = [
43 base36
44 pyqrcode
45 ];
46
47 nativeCheckInputs = [
48 pytest-asyncio
49 pytest-timeout
50 pytestCheckHook
51 ]
52 ++ lib.flatten (builtins.attrValues finalAttrs.passthru.optional-dependencies);
53
54 pythonImportsCheck = [ "pyhap" ];
55
56 disabledTests = lib.optionals (pythonAtLeast "3.14") [
57 # https://github.com/ikalchev/HAP-python/issues/490
58 "test_start_from_sync"
59 ];
60
61 meta = {
62 description = "HomeKit Accessory Protocol implementation";
63 homepage = "https://github.com/ikalchev/HAP-python";
64 changelog = "https://github.com/ikalchev/HAP-python/blob/${finalAttrs.src.tag}/CHANGELOG.md";
65 license = lib.licenses.asl20;
66 maintainers = with lib.maintainers; [ oro ];
67 };
68})