{ ... }: _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" ]; }); radios = super.radios.overridePythonAttrs (old: { 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 ]; }); }; }; }