104 lines
2.8 KiB
Nix
104 lines
2.8 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 = 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 = [ ];
|
|
};
|
|
}
|