{ lib, namespace, pkgs, buildHomeAssistantComponent, home-assistant, ... }: let inherit (lib.trivial) importJSON; inherit (lib.${namespace}) selectVariant mkAllSources; versionSpec = importJSON ./version.json; selected = selectVariant versionSpec null null; sources = mkAllSources pkgs selected; src-meta = selected.sources.nanokvm; version = if src-meta ? tag then src-meta.tag else src-meta.rev; # python-nanokvm must be built against HA's Python interpreter. # Re-use the source from its own version.json to avoid duplication. nanokvm-ver = importJSON ../../python/python-nanokvm/version.json; nanokvm-selected = selectVariant nanokvm-ver null null; nanokvm-sources = mkAllSources pkgs nanokvm-selected; python3Packages = home-assistant.python.pkgs; python-nanokvm = python3Packages.buildPythonPackage { pname = "nanokvm"; version = if nanokvm-selected.sources."python-nanokvm" ? tag then nanokvm-selected.sources."python-nanokvm".tag else nanokvm-selected.sources."python-nanokvm".rev; format = "pyproject"; src = nanokvm-sources."python-nanokvm"; prePatch = '' rm -f pyproject.toml cat > pyproject.toml << 'EOF' [build-system] requires = ["setuptools>=61.0.0", "wheel"] build-backend = "setuptools.build_meta" [project] name = "nanokvm" version = "0.1.0" description = "Async client for NanoKVM devices." urls = {repository = "https://github.com/puddly/python-nanokvm"} authors = [ {name = "puddly", email = "puddly3@gmail.com"} ] readme = "README.md" license = {text = "Apache-2.0"} requires-python = ">=3.11" dependencies = [ "aiohttp", "cryptography", "yarl", "pillow", "pydantic", "paramiko", ] [tool.setuptools.packages.find] exclude = ["tests", "tests.*"] EOF ''; buildInputs = with python3Packages; [ setuptools ]; propagatedBuildInputs = with python3Packages; [ aiohttp cryptography yarl pillow pydantic paramiko ]; doCheck = false; }; in buildHomeAssistantComponent { owner = src-meta.owner; domain = "nanokvm"; inherit version; src = sources.nanokvm; propagatedBuildInputs = [ python-nanokvm ]; postPatch = '' substituteInPlace custom_components/nanokvm/manifest.json \ --replace-fail '"nanokvm>=0.0.4"' '"nanokvm"' ''; meta = { changelog = "https://github.com/Wouter0100/homeassistant-nanokvm/releases/tag/${version}"; description = "This integration allows you to control and monitor your Sipeed NanoKVM device from Home Assistant."; homepage = "https://github.com/Wouter0100/homeassistant-nanokvm"; maintainers = [ ]; }; }