From 118abb46f8497ee430d36c0a409449d30f3f08cf 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 (cherry picked from commit fc2e71670085393fc85dab6676d16458e1b61dd9) --- .../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 e59e190851e1..5d1637056aef 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1659,6 +1659,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 07d62fef1aa3b758dc0455d991bdccf637ac6628 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 (cherry picked from commit 27eab49a9e7538ba33dbab889d6860f5b917c6ab) --- .../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 afd233d9efe4..aed1a3ce0439 100644 --- a/nixos/modules/services/home-automation/home-assistant.nix +++ b/nixos/modules/services/home-automation/home-assistant.nix @@ -718,6 +718,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 301574372d6ae4959b3364a40745bd4d665b6037 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). (cherry picked from commit 44dd157b6fdd1923e5471e691403ead6d989a608) --- nixos/modules/services/home-automation/home-assistant.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/nixos/modules/services/home-automation/home-assistant.nix b/nixos/modules/services/home-automation/home-assistant.nix index aed1a3ce0439..f94370d3bebf 100644 --- a/nixos/modules/services/home-automation/home-assistant.nix +++ b/nixos/modules/services/home-automation/home-assistant.nix @@ -67,7 +67,11 @@ 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 (builtins.getAttr "domain") cfg.customComponents + ); # Final list of components passed into the package to include required dependencies extraComponents = filter useComponent availableComponents;