diff --git a/nixos/modules/services/home-automation/home-assistant.nix b/nixos/modules/services/home-automation/home-assistant.nix index eda79e890193..2887e5754173 100644 --- a/nixos/modules/services/home-automation/home-assistant.nix +++ b/nixos/modules/services/home-automation/home-assistant.nix @@ -20,6 +20,7 @@ let filter filterAttrsRecursive flatten + getAttr hasAttrByPath isAttrs isDerivation @@ -111,7 +112,9 @@ let hasAttrByPath (splitString "." component) cfg.config || useComponentPlatform component || useExplicitComponent component - || builtins.elem component (cfg.extraComponents ++ cfg.defaultIntegrations); + || builtins.elem component ( + cfg.extraComponents ++ cfg.defaultIntegrations ++ map (getAttr "domain") cfg.customComponents + ); # Final list of components passed into the package to include required dependencies extraComponents = filter useComponent availableComponents; @@ -842,6 +845,7 @@ in # Custom components, maintained manually. "amshan" + "benqprojector" ]; in { diff --git a/pkgs/development/python-modules/benqprojector/default.nix b/pkgs/development/python-modules/benqprojector/default.nix new file mode 100644 index 000000000000..4dd1e9c0fea8 --- /dev/null +++ b/pkgs/development/python-modules/benqprojector/default.nix @@ -0,0 +1,45 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + hatchling, + hatch-vcs, + pyserial, + pyserial-asyncio-fast, +}: + +buildPythonPackage rec { + pname = "benqprojector"; + version = "0.1.6"; + pyproject = true; + + src = fetchFromGitHub { + owner = "rrooggiieerr"; + repo = "benqprojector.py"; + tag = version; + hash = "sha256-Ys2C44kr5gd6tXO51OFRx4YVKVRGLfFPCYDFGt+gN0c="; + }; + + build-system = [ + hatchling + hatch-vcs + ]; + + dependencies = [ + pyserial + pyserial-asyncio-fast + ]; + + # Test cases require an actual serial/telnet connection to a projector + doCheck = false; + + pythonImportsCheck = [ "benqprojector" ]; + + meta = rec { + description = "Python library to control BenQ projectors"; + homepage = "https://github.com/rrooggiieerr/benqprojector.py"; + changelog = "${homepage}/releases/tag/${version}"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ sephalon ]; + }; +} diff --git a/pkgs/servers/home-assistant/custom-components/benqprojector/package.nix b/pkgs/servers/home-assistant/custom-components/benqprojector/package.nix new file mode 100644 index 000000000000..2ae968131d14 --- /dev/null +++ b/pkgs/servers/home-assistant/custom-components/benqprojector/package.nix @@ -0,0 +1,29 @@ +{ + lib, + buildHomeAssistantComponent, + fetchFromGitHub, + benqprojector, +}: + +buildHomeAssistantComponent rec { + owner = "rrooggiieerr"; + domain = "benqprojector"; + version = "0.1.3"; + + src = fetchFromGitHub { + inherit owner; + repo = "homeassistant-benqprojector"; + tag = version; + hash = "sha256-iAFmXL10QqudECsS9u9w7KBETzu9aWCg1EBbFR1ff+o="; + }; + + dependencies = [ benqprojector ]; + + meta = rec { + description = "Home Assistant integration for BenQ projectors"; + homepage = "https://github.com/rrooggiieerr/homeassistant-benqprojector"; + changelog = "${homepage}/releases/tag/${version}"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ sephalon ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 1f0fcb673364..017297f3b438 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1758,6 +1758,8 @@ self: super: with self; { beniget = callPackage ../development/python-modules/beniget { }; + benqprojector = callPackage ../development/python-modules/benqprojector { }; + bentoml = callPackage ../development/python-modules/bentoml { }; berkeleydb = callPackage ../development/python-modules/berkeleydb { };