From fc2e71670085393fc85dab6676d16458e1b61dd9 Mon Sep 17 00:00:00 2001 From: Stefan Wiehler Date: Sat, 19 Apr 2025 09:43:20 +0200 Subject: [PATCH 1/3] python313Packages.benqprojector: init at 0.1.6 --- .../python-modules/benqprojector/default.nix | 45 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 47 insertions(+) create mode 100644 pkgs/development/python-modules/benqprojector/default.nix 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/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 6ab1d23a3b94..e20385f97800 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1748,6 +1748,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 { }; From 27eab49a9e7538ba33dbab889d6860f5b917c6ab Mon Sep 17 00:00:00 2001 From: Stefan Wiehler Date: Sat, 19 Apr 2025 10:56:27 +0200 Subject: [PATCH 2/3] home-assistant-custom-components.benqprojector: init at 0.1.3 --- .../home-automation/home-assistant.nix | 1 + .../benqprojector/package.nix | 29 +++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 pkgs/servers/home-assistant/custom-components/benqprojector/package.nix diff --git a/nixos/modules/services/home-automation/home-assistant.nix b/nixos/modules/services/home-automation/home-assistant.nix index eda79e890193..ad98e75cfbea 100644 --- a/nixos/modules/services/home-automation/home-assistant.nix +++ b/nixos/modules/services/home-automation/home-assistant.nix @@ -842,6 +842,7 @@ in # Custom components, maintained manually. "amshan" + "benqprojector" ]; in { 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 ]; + }; +} From 44dd157b6fdd1923e5471e691403ead6d989a608 Mon Sep 17 00:00:00 2001 From: Stefan Wiehler Date: Sat, 19 Apr 2025 15:15:25 +0200 Subject: [PATCH 3/3] nixos/home-assistant: add custom components to used components query There should be no need to add custom components without YAML configuration to extraComponents for systemd service modifications to become effective (e.g. serial access). --- nixos/modules/services/home-automation/home-assistant.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/nixos/modules/services/home-automation/home-assistant.nix b/nixos/modules/services/home-automation/home-assistant.nix index ad98e75cfbea..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;