{ lib , buildPythonPackage , fetchFromGitHub , pythonOlder , stdenvNoCC , substituteAll # build , setuptools , pythonRelaxDepsHook # propagates , aiohttp , aiorun , async-timeout , coloredlogs , dacite , orjson , home-assistant-chip-clusters # optionals , cryptography , home-assistant-chip-core , zeroconf # tests , python , pytest , pytest-aiohttp , pytestCheckHook }: let paaCerts = stdenvNoCC.mkDerivation rec { pname = "matter-server-paa-certificates"; version = "1.2.0.1"; src = fetchFromGitHub { owner = "project-chip"; repo = "connectedhomeip"; rev = "refs/tags/v${version}"; hash = "sha256-p3P0n5oKRasYz386K2bhN3QVfN6oFndFIUWLEUWB0ss="; }; installPhase = '' runHook preInstall mkdir -p $out cp $src/credentials/development/paa-root-certs/* $out/ runHook postInstall ''; }; in buildPythonPackage rec { pname = "python-matter-server"; version = "5.9.0"; format = "pyproject"; disabled = pythonOlder "3.10"; src = fetchFromGitHub { owner = "home-assistant-libs"; repo = "python-matter-server"; rev = "refs/tags/${version}"; hash = "sha256-O3AJ7vBjuwRGa4AMwWIdxn5m2F45rLCjCHeff18b/5E="; }; patches = [ (substituteAll { src = ./link-paa-root-certs.patch; paacerts = paaCerts; }) ]; postPatch = '' substituteInPlace pyproject.toml \ --replace 'version = "0.0.0"' 'version = "${version}"' \ --replace '--cov' "" ''; nativeBuildInputs = [ setuptools pythonRelaxDepsHook ]; pythonRelaxDeps = [ "home-assistant-chip-clusters" ]; propagatedBuildInputs = [ aiohttp aiorun async-timeout coloredlogs dacite orjson home-assistant-chip-clusters ]; passthru.optional-dependencies = { server = [ cryptography home-assistant-chip-core zeroconf ]; }; nativeCheckInputs = [ pytest-aiohttp pytestCheckHook ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies); preCheck = let pythonEnv = python.withPackages (_: propagatedBuildInputs ++ nativeCheckInputs ++ [ pytest ]); in '' export PYTHONPATH=${pythonEnv}/${python.sitePackages} ''; pytestFlagsArray = [ # Upstream theymselves limit the test scope # https://github.com/home-assistant-libs/python-matter-server/blob/main/.github/workflows/test.yml#L65 "tests/server" ]; meta = with lib; { changelog = "https://github.com/home-assistant-libs/python-matter-server/releases/tag/${version}"; description = "Python server to interact with Matter"; mainProgram = "matter-server"; homepage = "https://github.com/home-assistant-libs/python-matter-server"; license = licenses.asl20; maintainers = teams.home-assistant.members; }; }