From c2520f5d00c805ca3ec00c980ae53bfdf9caecf2 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Sat, 4 Jul 2026 22:12:45 +0200 Subject: [PATCH] home-assistant: 2026.6.4 -> 2026.7.1 https://www.home-assistant.io/blog/2026/07/01/release-20267/ https://github.com/home-assistant/core/releases/tag/2026.7.1 --- .../home-assistant/component-packages.nix | 201 +++++++++++------- pkgs/servers/home-assistant/default.nix | 6 +- pkgs/servers/home-assistant/frontend.nix | 4 +- .../patches/static-follow-symlinks.patch | 16 +- 4 files changed, 138 insertions(+), 89 deletions(-) diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix index ee46cfa8c7c5..5e596553f08b 100644 --- a/pkgs/servers/home-assistant/component-packages.nix +++ b/pkgs/servers/home-assistant/component-packages.nix @@ -2,7 +2,7 @@ # Do not edit! { - version = "2026.6.4"; + version = "2026.7.1"; components = { "3_day_blinds" = ps: with ps; [ @@ -42,10 +42,6 @@ ps: with ps; [ accuweather ]; - "acer_projector" = - ps: with ps; [ - serialx - ]; "acmeda" = ps: with ps; [ aiopulse @@ -245,10 +241,6 @@ "amp_motorization" = ps: with ps; [ ]; - "ampio" = - ps: with ps; [ - asmog - ]; "analytics" = ps: with ps; [ aiohasupervisor @@ -369,6 +361,9 @@ ps: with ps; [ sharp-aquos-rc ]; + "aqvify" = + ps: with ps; [ + ]; # missing inputs: pyaqvify "aranet" = ps: with ps; [ aioesphomeapi @@ -422,7 +417,7 @@ ps: with ps; [ aiohasupervisor paho-mqtt - ]; + ]; # missing inputs: arwn-client "aseko_pool_live" = ps: with ps; [ aioaseko @@ -454,10 +449,6 @@ ps: with ps; [ pyatag ]; - "aten_pe" = - ps: with ps; [ - atenpdu - ]; "atlanticcityelectric" = ps: with ps; [ ]; @@ -551,9 +542,8 @@ serialx zeroconf ]; - "avion" = + "avosdim" = ps: with ps; [ - avion ]; "awair" = ps: with ps; [ @@ -643,10 +633,6 @@ ps: with ps; [ pybbox ]; - "beewi_smartclim" = - ps: with ps; [ - beewi-smartclim - ]; "bge" = ps: with ps; [ ]; @@ -905,6 +891,9 @@ "button" = ps: with ps; [ ]; + "bwt" = + ps: with ps; [ + ]; "caldav" = ps: with ps; [ caldav @@ -1005,6 +994,32 @@ ps: with ps; [ pychannels ]; + "chef_iq" = + ps: with ps; [ + aioesphomeapi + aiohasupervisor + aioruuvigateway + aioshelly + aiousbwatcher + bleak + bleak-esphome + bleak-retry-connector + bluetooth-adapters + bluetooth-auto-recovery + bluetooth-data-tools + dbus-fast + esphome-dashboard-api + ha-ffmpeg + habluetooth + hassil + home-assistant-intents + ifaddr + mutagen + pymicro-vad + pyspeex-noise + serialx + zeroconf + ]; # missing inputs: chefiq-ble "chess_com" = ps: with ps; [ chess-com-api @@ -1029,10 +1044,6 @@ ps: with ps; [ python-citybikes ]; - "clementine" = - ps: with ps; [ - python-clementine-remote - ]; "clickatell" = ps: with ps; [ ]; @@ -1114,7 +1125,7 @@ ]; "command_line" = ps: with ps; [ - jsonpath + jsonpath-python ]; "compensation" = ps: with ps; [ @@ -1567,6 +1578,10 @@ ps: with ps; [ aioecowitt ]; + "edifier_infrared" = + ps: with ps; [ + infrared-protocols + ]; "edimax" = ps: with ps; [ pyedimax @@ -1615,10 +1630,6 @@ ps: with ps; [ elgato ]; - "eliqonline" = - ps: with ps; [ - eliqonline - ]; "elkm1" = ps: with ps; [ elkm1-lib @@ -1675,6 +1686,9 @@ "energie_vanons" = ps: with ps; [ ]; + "energieleser" = + ps: with ps; [ + ]; # missing inputs: energieleser "energy" = ps: with ps; [ fnv-hash-fast @@ -1707,6 +1721,9 @@ ps: with ps; [ enturclient ]; + "envertech_evt800" = + ps: with ps; [ + ]; # missing inputs: pyenvertechevt800 "environment_canada" = ps: with ps; [ env-canada @@ -2276,7 +2293,6 @@ ]; "gitter" = ps: with ps; [ - gitterpy ]; "glances" = ps: with ps; [ @@ -2441,14 +2457,15 @@ ps: with ps; [ greenplanet-energy-api ]; + "greencell" = + ps: with ps; [ + aiohasupervisor + paho-mqtt + ]; # missing inputs: greencell_client "greeneye_monitor" = ps: with ps; [ greeneye-monitor ]; - "greenwave" = - ps: with ps; [ - greenwavereality - ]; "group" = ps: with ps; [ ]; @@ -2531,6 +2548,9 @@ "heiwa" = ps: with ps; [ ]; + "helty" = + ps: with ps; [ + ]; # missing inputs: pyhelty "heos" = ps: with ps; [ pyheos @@ -2977,6 +2997,9 @@ ps: with ps; [ aioimmich ]; + "imou" = + ps: with ps; [ + ]; # missing inputs: pyimouapi "improv_ble" = ps: with ps; [ aioesphomeapi @@ -3120,6 +3143,9 @@ ps: with ps; [ ha-iotawattpy ]; + "iotorero" = + ps: with ps; [ + ]; "iotty" = ps: with ps; [ iottycloud @@ -3212,8 +3238,7 @@ ]; "itach" = ps: with ps; [ - pyitachip2ir - ]; + ]; # missing inputs: pyitachip2ir2 "itunes" = ps: with ps; [ ]; @@ -3358,6 +3383,10 @@ ps: with ps; [ kiwiki-client ]; + "klik_aan_klik_uit" = + ps: with ps; [ + rf-protocols + ]; "kmtronic" = ps: with ps; [ pykmtronic @@ -3367,12 +3396,16 @@ knocki ]; "knx" = - ps: with ps; [ + ps: + with ps; + [ home-assistant-frontend knx-frontend + knx-telegram-store xknx xknxproject - ]; + ] + ++ knx-telegram-store.optional-dependencies.sqlite; "kodi" = ps: with ps; [ pykodi @@ -3723,9 +3756,6 @@ psutil-home-assistant sqlalchemy ]; - "logentries" = - ps: with ps; [ - ]; "logger" = ps: with ps; [ ]; @@ -3945,6 +3975,9 @@ ps: with ps; [ python-melcloud ]; + "melcloud_home" = + ps: with ps; [ + ]; # missing inputs: aiomelcloudhome "melissa" = ps: with ps; [ py-melissa-climate @@ -4023,18 +4056,6 @@ ps: with ps; [ pycsspeechtts ]; - "microsoft_face" = - ps: with ps; [ - pyturbojpeg - ]; - "microsoft_face_detect" = - ps: with ps; [ - pyturbojpeg - ]; - "microsoft_face_identify" = - ps: with ps; [ - pyturbojpeg - ]; "miele" = ps: with ps; [ pymiele @@ -4274,7 +4295,6 @@ ]; "msteams" = ps: with ps; [ - pymsteams ]; "mta" = ps: with ps; [ @@ -4418,6 +4438,9 @@ ps: with ps; [ neurio ]; + "nexen" = + ps: with ps; [ + ]; "nexia" = ps: with ps; [ nexia @@ -4886,6 +4909,7 @@ universal-silabs-flasher zeroconf zha + zha-quirks ]; "otp" = ps: with ps; [ @@ -4900,9 +4924,12 @@ ourgroceries ]; "overkiz" = - ps: with ps; [ + ps: + with ps; + [ pyoverkiz - ]; + ] + ++ pyoverkiz.optional-dependencies.nexity; "overseerr" = ps: with ps; [ aiohasupervisor @@ -5504,7 +5531,11 @@ "raspberry_pi" = ps: with ps; [ aiohasupervisor + aiousbwatcher + ha-silabs-firmware-client psutil-home-assistant + serialx + universal-silabs-flasher ]; "raspyrfm" = ps: with ps; [ @@ -5592,7 +5623,7 @@ ]; "rest" = ps: with ps; [ - jsonpath + jsonpath-python xmltodict ]; "rest_command" = @@ -5807,7 +5838,7 @@ "scrape" = ps: with ps; [ beautifulsoup4 - jsonpath + jsonpath-python lxml xmltodict ]; @@ -5821,10 +5852,6 @@ "script" = ps: with ps; [ ]; - "scsgate" = - ps: with ps; [ - scsgate - ]; "search" = ps: with ps; [ ]; @@ -6297,6 +6324,9 @@ ]; "srp_energy" = ps: with ps; [ + fnv-hash-fast + psutil-home-assistant + sqlalchemy srpenergy ]; "ssdp" = @@ -6406,7 +6436,7 @@ ]; "swisscom" = ps: with ps; [ - ]; + ]; # missing inputs: python-swisscom-internet-box "switch" = ps: with ps; [ ]; @@ -6446,6 +6476,29 @@ ]; "switchbot_cloud" = ps: with ps; [ + aiohasupervisor + aiousbwatcher + bleak + bleak-retry-connector + bluetooth-adapters + bluetooth-auto-recovery + bluetooth-data-tools + cronsim + dbus-fast + ha-ffmpeg + habluetooth + hass-nabucasa + hassil + home-assistant-intents + matter-ble-proxy + matter-python-client + mutagen + openai + pymicro-vad + pyspeex-noise + pyturbojpeg + securetar + serialx switchbot-api ]; "switcher_kis" = @@ -6718,10 +6771,6 @@ pytibber sqlalchemy ]; - "tikteck" = - ps: with ps; [ - tikteck - ]; "tile" = ps: with ps; [ pytile @@ -7018,10 +7067,6 @@ ps: with ps; [ unifi-discovery ]; - "unifiled" = - ps: with ps; [ - unifiled - ]; "unifiprotect" = ps: with ps; [ uiprotect @@ -7314,6 +7359,9 @@ ps: with ps; [ aiowatttime ]; + "wattwaechter" = + ps: with ps; [ + ]; # missing inputs: aio-wattwaechter "waze_travel_time" = ps: with ps; [ pywaze @@ -7686,6 +7734,7 @@ serialx universal-silabs-flasher zha + zha-quirks ]; "zhong_hong" = ps: with ps; [ @@ -7792,6 +7841,7 @@ "aprs" "apsystems" "aquacell" + "aqualogic" "aranet" "arcam_fmj" "arve" @@ -7947,6 +7997,7 @@ "econet" "ecovacs" "ecowitt" + "edifier_infrared" "edl21" "efergy" "egauge" @@ -7974,6 +8025,7 @@ "enocean" "enphase_envoy" "environment_canada" + "envisalink" "epic_games_store" "epion" "epson" @@ -8213,6 +8265,7 @@ "kiosker" "kira" "kitchen_sink" + "klik_aan_klik_uit" "kmtronic" "knocki" "knx" @@ -8259,7 +8312,6 @@ "locative" "lock" "logbook" - "logentries" "logger" "lojack" "london_air" @@ -8305,9 +8357,6 @@ "mfi" "microbees" "microsoft" - "microsoft_face" - "microsoft_face_detect" - "microsoft_face_identify" "miele" "mikrotik" "mill" @@ -8559,6 +8608,7 @@ "ruuvitag_ble" "rympro" "sabnzbd" + "saj" "samsung_infrared" "samsungtv" "sanix" @@ -8748,6 +8798,7 @@ "ukraine_alarm" "unifi" "unifi_access" + "unifi_direct" "unifi_discovery" "unifiprotect" "universal" diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix index b5ebfba471e3..49d422039124 100644 --- a/pkgs/servers/home-assistant/default.nix +++ b/pkgs/servers/home-assistant/default.nix @@ -270,7 +270,7 @@ let extraBuildInputs = extraPackages python3Packages; # Don't forget to run update-component-packages.py after updating - hassVersion = "2026.6.4"; + hassVersion = "2026.7.1"; in python3Packages.buildPythonApplication rec { @@ -291,13 +291,13 @@ python3Packages.buildPythonApplication rec { owner = "home-assistant"; repo = "core"; tag = version; - hash = "sha256-NeqJT2CW8A0VfUJ2yrR+KGmmQMK8q0Wdag43rUBBoWU="; + hash = "sha256-3QQ4zDbhr6wD0AR7QOnG3mfbtKYcesCF9qrFwRleQfU="; }; # Secondary source is pypi sdist for translations sdist = fetchPypi { inherit pname version; - hash = "sha256-7Y26vN0oskJBgijtm9RZcvHw/xBEH3IsI8hezgsOVr0="; + hash = "sha256-++Hb/ZXXhqnf7wOzmi5kmENFHqhLavZFJijRFMQu9Lg="; }; build-system = with python3Packages; [ diff --git a/pkgs/servers/home-assistant/frontend.nix b/pkgs/servers/home-assistant/frontend.nix index f0950cfe0265..b984654efa37 100644 --- a/pkgs/servers/home-assistant/frontend.nix +++ b/pkgs/servers/home-assistant/frontend.nix @@ -8,7 +8,7 @@ buildPythonPackage (finalAttrs: { # the frontend version corresponding to a specific home-assistant version can be found here # https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/frontend/manifest.json pname = "home-assistant-frontend"; - version = "20260527.7"; + version = "20260624.4"; format = "wheel"; src = fetchPypi { @@ -17,7 +17,7 @@ buildPythonPackage (finalAttrs: { pname = "home_assistant_frontend"; dist = "py3"; python = "py3"; - hash = "sha256-zYm8K3HJnAkT41S6TmGvj8V8zpt7tb4pRtWCiB9PEXw="; + hash = "sha256-mC3+BGVT9sDlHhj2aNeqh0YMehE3BAAT8SfMOQKv4/E="; }; # there is nothing to strip in this package diff --git a/pkgs/servers/home-assistant/patches/static-follow-symlinks.patch b/pkgs/servers/home-assistant/patches/static-follow-symlinks.patch index 079b07f970aa..8dce29af3c21 100644 --- a/pkgs/servers/home-assistant/patches/static-follow-symlinks.patch +++ b/pkgs/servers/home-assistant/patches/static-follow-symlinks.patch @@ -1,25 +1,23 @@ diff --git a/homeassistant/components/http/static.py b/homeassistant/components/http/static.py -index 29c5840a4bf..463c723df91 100644 +index 40405a8734d..754edffb910 100644 --- a/homeassistant/components/http/static.py +++ b/homeassistant/components/http/static.py -@@ -7,6 +7,7 @@ from pathlib import Path - from typing import Final +@@ -5,6 +5,7 @@ from pathlib import Path + from typing import Final, override from aiohttp.hdrs import CACHE_CONTROL, CONTENT_TYPE +from aiohttp.typedefs import PathLike from aiohttp.web import FileResponse, Request, StreamResponse from aiohttp.web_fileresponse import CONTENT_TYPES, FALLBACK_CONTENT_TYPE from aiohttp.web_urldispatcher import StaticResource -@@ -21,6 +22,12 @@ RESPONSE_CACHE: LRU[tuple[str, Path], tuple[Path, str]] = LRU(512) +@@ -20,6 +21,10 @@ _GUESSER = CONTENT_TYPES.guess_file_type + class CachingStaticResource(StaticResource): """Static Resource handler that will add cache headers.""" - + def __init__(self, prefix: str, directory: PathLike, **kwargs): + """Allow static files to be hosted behind symlinks.""" + kwargs.update({"follow_symlinks": True}) + super().__init__(prefix, directory, **kwargs) -+ -+ + + @override async def _handle(self, request: Request) -> StreamResponse: - """Wrap base handler to cache file path resolution and content type guess.""" - rel_url = request.match_info["filename"]