From 57fa32bf9cc3c7c0b8dffe031a5cd9e8fb53b5aa Mon Sep 17 00:00:00 2001 From: mjallen18 Date: Tue, 31 Mar 2026 17:24:46 -0500 Subject: [PATCH] overrides for hass lol --- flake.nix | 4 ++ overlays/homeassistant/default.nix | 98 ++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) diff --git a/flake.nix b/flake.nix index 53a5b90..dd23ccc 100644 --- a/flake.nix +++ b/flake.nix @@ -283,6 +283,10 @@ # ... # "libsoup-2.74.3" # "mbedtls-2.28.10" + # ecdsa is pulled in by srp → ha-icloud3 custom component. + # CVE-2024-23342 applies to timing-sensitive cryptographic use cases, + # not the SRP authentication usage here. + "python3.14-ecdsa-0.19.1" ]; }; diff --git a/overlays/homeassistant/default.nix b/overlays/homeassistant/default.nix index 7a3ffe2..0586540 100644 --- a/overlays/homeassistant/default.nix +++ b/overlays/homeassistant/default.nix @@ -2,6 +2,12 @@ _final: prev: { home-assistant = prev.home-assistant.override { packageOverrides = _self: super: { + nice-go = super.nice-go.overridePythonAttrs (_old: { doCheck = false; }); + cfn-lint = super.cfn-lint.overridePythonAttrs (_old: { doCheck = false; }); + aiobotocore = super.aiobotocore.overridePythonAttrs (_old: { doCheck = false; }); + connect-box = super.connect-box.overridePythonAttrs (_old: { doCheck = false; }); + motionblindsble = super.motionblindsble.overridePythonAttrs (_old: { doCheck = false; }); + pyinsteon = super.pyinsteon.overridePythonAttrs (_old: { doCheck = false; }); psnawp = super.psnawp.overridePythonAttrs (old: { nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ super.pythonRelaxDepsHook ]; pythonRelaxDeps = [ "pycountry" ]; @@ -10,6 +16,98 @@ _final: prev: { nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ super.pythonRelaxDepsHook ]; pythonRelaxDeps = [ "pycountry" ]; }); + + # Several packages are gated behind pythonAtLeast "3.13" or "3.14" guards + # in nixpkgs, but are required as transitive dependencies of HA components + # when using availableComponents. Override them all to allow Python 3.14 + # until upstream catches up. + aiounittest = super.aiounittest.overridePythonAttrs (_old: { + disabled = false; + doCheck = false; + }); + # aiokef tests rely on asyncio.get_event_loop() auto-creating a loop, + # which was removed in Python 3.10+. + aiokef = super.aiokef.overridePythonAttrs (_old: { + doCheck = false; + }); + # pyads 3.5.1 adopted a src/ layout; the nixpkgs patchPhase references + # the old flat path, and setup.py always tries to compile adslib from + # source via make. Skip the compile step by making platform_is_unix() + # return False, pre-place the nixpkgs adslib.so in src/ so the wheel + # installs it, and disable the import check since pyads searches sys.path + # for adslib.so at import time (requires the real ADS hardware library). + pyads = super.pyads.overridePythonAttrs (old: { + patchPhase = '' + substituteInPlace setup.py \ + --replace-fail "sys.platform.startswith(\"linux\") or sys.platform.startswith(\"darwin\")" \ + "False" + ''; + preBuild = '' + mkdir -p src + cp ${builtins.head old.buildInputs}/lib/adslib.so src/adslib.so + ''; + doCheck = false; + pythonImportsCheck = [ ]; + }); + apischema = super.apischema.overridePythonAttrs (_old: { + disabled = false; + doCheck = false; + }); + aws-sam-translator = super.aws-sam-translator.overridePythonAttrs (_old: { + # https://github.com/aws/serverless-application-model/issues/3831 + disabled = false; + doCheck = false; + }); + # future uses lib2to3 in past.translation, which was removed in Python 3.14. + # That module is only needed for Python 2→3 source translation at runtime, + # which HA components don't use. Drop past.translation from the import check. + future = super.future.overridePythonAttrs (_old: { + disabled = false; + pythonImportsCheck = [ + "future.builtins" + "future.moves" + "future.standard_library" + "past.builtins" + ]; + }); + raincloudy = super.raincloudy.overridePythonAttrs (_old: { + disabled = false; + doCheck = false; + }); + reactivex = super.reactivex.overridePythonAttrs (_old: { + disabled = false; + doCheck = false; + }); + + # Several packages are marked broken due to version constraints on upstream + # deps that have been bumped in nixpkgs (pysnmp 7.x, xmltodict 1.x). + # They work fine at runtime for HA's usage. + # aio-georss-client is marked broken because xmltodict >= 1.0 changed how + # namespace-annotated XML elements are returned (dict instead of string), + # which breaks _process_coordinates. The GDACS integration is not used here + # and the package installs fine; skip tests to unblock the build. + aio-georss-client = super.aio-georss-client.overridePythonAttrs (_old: { + meta = (super.aio-georss-client.meta or { }) // { + broken = false; + }; + doCheck = false; + }); + atenpdu = super.atenpdu.overridePythonAttrs (_old: { + meta = (super.atenpdu.meta or { }) // { + broken = false; + }; + nativeBuildInputs = (_old.nativeBuildInputs or [ ]) ++ [ super.pythonRelaxDepsHook ]; + pythonRelaxDeps = [ "async-timeout" ]; + }); + bimmer-connected = super.bimmer-connected.overridePythonAttrs (old: { + meta = (old.meta or { }) // { + broken = false; + }; + doCheck = false; + # pillow is an optional dep (China market only) but the runtime dep check + # flags it as missing; add it to propagatedBuildInputs to satisfy it. + propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ super.pillow ]; + }); }; }; }