Files
nix-config/packages/homeassistant/ha-nanokvm/default.nix
2026-04-05 19:10:23 -05:00

101 lines
2.7 KiB
Nix

{
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 = src-meta.tag or 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 =
nanokvm-selected.sources."python-nanokvm".tag or 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 {
inherit (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 = [ ];
};
}