diff options
Diffstat (limited to 'pkgs/servers/home-assistant')
-rw-r--r-- | pkgs/servers/home-assistant/component-packages.nix | 148 | ||||
-rw-r--r-- | pkgs/servers/home-assistant/default.nix | 108 | ||||
-rw-r--r-- | pkgs/servers/home-assistant/frontend.nix | 4 | ||||
-rw-r--r-- | pkgs/servers/home-assistant/intents.nix | 54 | ||||
-rw-r--r-- | pkgs/servers/home-assistant/patches/static-follow-symlinks.patch | 12 | ||||
-rw-r--r-- | pkgs/servers/home-assistant/patches/static-symlinks.patch | 37 | ||||
-rw-r--r-- | pkgs/servers/home-assistant/stubs.nix | 6 |
7 files changed, 180 insertions, 189 deletions
diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix index cc2c6d5cf7d3..57faad5e0902 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 = "2024.1.6"; + version = "2024.2.1"; components = { "3_day_blinds" = ps: with ps; [ ]; @@ -94,6 +94,8 @@ "airtouch4" = ps: with ps; [ airtouch4pyapi ]; + "airtouch5" = ps: with ps; [ + ]; # missing inputs: airtouch5py "airvisual" = ps: with ps; [ pyairvisual ]; @@ -157,6 +159,8 @@ psutil-home-assistant sqlalchemy ]; + "analytics_insights" = ps: with ps; [ + ]; # missing inputs: python-homeassistant-analytics "android_ip_webcam" = ps: with ps; [ pydroid-ipcam ]; @@ -383,6 +387,8 @@ "balboa" = ps: with ps; [ pybalboa ]; + "bang_olufsen" = ps: with ps; [ + ]; # missing inputs: mozart-api "bayesian" = ps: with ps; [ ]; "bbox" = ps: with ps; [ @@ -561,6 +567,8 @@ ]; "brel_home" = ps: with ps; [ ]; + "bring" = ps: with ps; [ + ]; # missing inputs: python-bring-api "broadlink" = ps: with ps; [ broadlink ]; @@ -680,9 +688,6 @@ "cisco_mobility_express" = ps: with ps; [ ciscomobilityexpress ]; - "cisco_webex_teams" = ps: with ps; [ - webexteamssdk - ]; "citybikes" = ps: with ps; [ ]; "clementine" = ps: with ps; [ @@ -719,6 +724,8 @@ "co2signal" = ps: with ps; [ aioelectricitymaps ]; + "coautilities" = ps: with ps; [ + ]; "coinbase" = ps: with ps; [ ]; # missing inputs: coinbase "color_extractor" = ps: with ps; [ @@ -1115,6 +1122,7 @@ pyeconet ]; "ecovacs" = ps: with ps; [ + deebot-client ]; # missing inputs: py-sucks "ecowitt" = ps: with ps; [ aioecowitt @@ -1170,6 +1178,11 @@ "elv" = ps: with ps; [ pypca ]; + "elvia" = ps: with ps; [ + fnv-hash-fast + psutil-home-assistant + sqlalchemy + ]; # missing inputs: elvia "emby" = ps: with ps; [ pyemby ]; @@ -1238,6 +1251,9 @@ "ephember" = ps: with ps; [ pyephember ]; + "epion" = ps: with ps; [ + epion + ]; "epson" = ps: with ps; [ epson-projector ]; @@ -1332,8 +1348,6 @@ ]; "facebook" = ps: with ps; [ ]; - "facebox" = ps: with ps; [ - ]; "fail2ban" = ps: with ps; [ ]; "familyhub" = ps: with ps; [ @@ -1787,6 +1801,15 @@ webrtc-noise-gain zeroconf ]; + "govee_light_local" = ps: with ps; [ + aiohttp-cors + aiohttp-fast-url-dispatcher + aiohttp-zlib-ng + fnv-hash-fast + ifaddr + psutil-home-assistant + sqlalchemy + ]; # missing inputs: govee-local-api "gpsd" = ps: with ps; [ gps3 ]; @@ -1898,6 +1921,8 @@ "hive" = ps: with ps; [ pyhiveapi ]; + "hko" = ps: with ps; [ + ]; # missing inputs: hko "hlk_sw16" = ps: with ps; [ hlk-sw16 ]; @@ -1915,10 +1940,6 @@ sqlalchemy ]; "home_plus_control" = ps: with ps; [ - aiohttp-cors - aiohttp-fast-url-dispatcher - aiohttp-zlib-ng - homepluscontrol ]; "homeassistant" = ps: with ps; [ ]; @@ -2108,6 +2129,9 @@ ]; "hurrican_shutters_wholesale" = ps: with ps; [ ]; + "huum" = ps: with ps; [ + huum + ]; "hvv_departures" = ps: with ps; [ pygti ]; @@ -2542,6 +2566,9 @@ ]; "lacrosse_view" = ps: with ps; [ ]; # missing inputs: lacrosse-view + "lamarzocco" = ps: with ps; [ + lmcloud + ]; "lametric" = ps: with ps; [ aiohttp-cors aiohttp-fast-url-dispatcher @@ -2608,6 +2635,35 @@ webrtc-noise-gain zeroconf ]; + "leaone" = ps: with ps; [ + aioesphomeapi + aiohttp-cors + aiohttp-fast-url-dispatcher + aiohttp-zlib-ng + aioruuvigateway + aioshelly + bleak + bleak-esphome + bleak-retry-connector + bluetooth-adapters + bluetooth-auto-recovery + bluetooth-data-tools + dbus-fast + esphome-dashboard-api + fnv-hash-fast + ha-ffmpeg + habluetooth + hassil + home-assistant-intents + ifaddr + mutagen + psutil-home-assistant + pyserial + pyudev + sqlalchemy + webrtc-noise-gain + zeroconf + ]; # missing inputs: leaone-ble "led_ble" = ps: with ps; [ aioesphomeapi aiohttp-cors @@ -2650,7 +2706,6 @@ aiopyarr ]; "life360" = ps: with ps; [ - life360 ]; "lifx" = ps: with ps; [ aiohttp-cors @@ -2962,9 +3017,6 @@ "meteoclimatic" = ps: with ps; [ pymeteoclimatic ]; - "metoffice" = ps: with ps; [ - datapoint - ]; "mfi" = ps: with ps; [ ]; # missing inputs: mficlient "microsoft" = ps: with ps; [ @@ -3211,6 +3263,14 @@ "mythicbeastsdns" = ps: with ps; [ mbddns ]; + "myuplink" = ps: with ps; [ + aiohttp-cors + aiohttp-fast-url-dispatcher + aiohttp-zlib-ng + fnv-hash-fast + psutil-home-assistant + sqlalchemy + ]; # missing inputs: myuplink "nad" = ps: with ps; [ nad-receiver ]; @@ -3884,6 +3944,17 @@ "qwikswitch" = ps: with ps; [ pyqwikswitch ]; + "rabbitair" = ps: with ps; [ + aiohttp-cors + aiohttp-fast-url-dispatcher + aiohttp-zlib-ng + fnv-hash-fast + ifaddr + psutil-home-assistant + python-rabbitair + sqlalchemy + zeroconf + ]; "rachio" = ps: with ps; [ aiohttp-cors aiohttp-fast-url-dispatcher @@ -3920,6 +3991,16 @@ aioeagle eagle100 ]; + "rainforest_raven" = ps: with ps; [ + aiohttp-cors + aiohttp-fast-url-dispatcher + aiohttp-zlib-ng + fnv-hash-fast + psutil-home-assistant + pyserial + pyudev + sqlalchemy + ]; # missing inputs: aioraven "rainmachine" = ps: with ps; [ regenmaschine ]; @@ -4079,6 +4160,8 @@ "roku" = ps: with ps; [ rokuecp ]; + "romy" = ps: with ps; [ + ]; # missing inputs: romy "roomba" = ps: with ps; [ roombapy ]; @@ -4826,8 +4909,7 @@ tank-utility ]; "tankerkoenig" = ps: with ps; [ - pytankerkoenig - ]; + ]; # missing inputs: aiotankerkoenig "tapsaff" = ps: with ps; [ ]; # missing inputs: tapsaff "tasmota" = ps: with ps; [ @@ -4843,9 +4925,17 @@ ]; "tcp" = ps: with ps; [ ]; + "technove" = ps: with ps; [ + ]; # missing inputs: python-technove "ted5000" = ps: with ps; [ xmltodict ]; + "tedee" = ps: with ps; [ + aiohttp-cors + aiohttp-fast-url-dispatcher + aiohttp-zlib-ng + pytedee-async + ]; "telegram" = ps: with ps; [ aiohttp-cors aiohttp-fast-url-dispatcher @@ -4881,6 +4971,9 @@ "tesla_wall_connector" = ps: with ps; [ tesla-wall-connector ]; + "teslemetry" = ps: with ps; [ + tesla-fleet-api + ]; "tessie" = ps: with ps; [ ]; # missing inputs: tessie-api "text" = ps: with ps; [ @@ -5085,6 +5178,8 @@ "tplink_omada" = ps: with ps; [ tplink-omada-client ]; + "tplink_tapo" = ps: with ps; [ + ]; "traccar" = ps: with ps; [ aiohttp-cors aiohttp-fast-url-dispatcher @@ -5092,6 +5187,9 @@ pytraccar stringcase ]; + "traccar_server" = ps: with ps; [ + pytraccar + ]; "trace" = ps: with ps; [ ]; "tractive" = ps: with ps; [ @@ -5133,8 +5231,7 @@ ]; "tuya" = ps: with ps; [ ha-ffmpeg - tuya-iot-py-sdk - ]; + ]; # missing inputs: tuya-device-sharing-sdk "twentemilieu" = ps: with ps; [ twentemilieu ]; @@ -5891,6 +5988,7 @@ "enocean" "enphase_envoy" "environment_canada" + "epion" "epson" "escea" "esphome" @@ -5901,7 +5999,6 @@ "ezviz" "faa_delays" "facebook" - "facebox" "fail2ban" "fan" "feedreader" @@ -5972,6 +6069,7 @@ "google_travel_time" "google_wifi" "govee_ble" + "gpsd" "gpslogger" "graphite" "gree" @@ -5995,7 +6093,6 @@ "hlk_sw16" "holiday" "home_connect" - "home_plus_control" "homeassistant" "homeassistant_alerts" "homeassistant_green" @@ -6015,6 +6112,7 @@ "huisbaasje" "humidifier" "hunterdouglas_powerview" + "huum" "hvv_departures" "hydrawise" "hyperion" @@ -6065,6 +6163,7 @@ "kostal_plenticore" "kraken" "kulersky" + "lamarzocco" "lametric" "landisgyr_heat_meter" "lastfm" @@ -6096,6 +6195,8 @@ "loqed" "lovelace" "luftdaten" + "lupusec" + "lutron" "lutron_caseta" "lyric" "mailbox" @@ -6116,7 +6217,6 @@ "met_eireann" "meteo_france" "meteoclimatic" - "metoffice" "microsoft_face" "microsoft_face_detect" "microsoft_face_identify" @@ -6244,6 +6344,7 @@ "qnap" "qnap_qsw" "qwikswitch" + "rabbitair" "rachio" "radarr" "radio_browser" @@ -6382,16 +6483,17 @@ "tag" "tailscale" "tailwind" - "tankerkoenig" "tasmota" "tautulli" "tcp" + "tedee" "telegram" "telegram_bot" "tellduslive" "temper" "template" "tesla_wall_connector" + "teslemetry" "text" "thermobeacon" "thermopro" @@ -6414,6 +6516,7 @@ "tplink" "tplink_omada" "traccar" + "traccar_server" "trace" "tractive" "tradfri" @@ -6425,7 +6528,6 @@ "transport_nsw" "trend" "tts" - "tuya" "twentemilieu" "twilio" "twinkly" diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix index 334ecb57d6dd..0d3056db2584 100644 --- a/pkgs/servers/home-assistant/default.nix +++ b/pkgs/servers/home-assistant/default.nix @@ -72,7 +72,7 @@ let hash = "sha256-YmJH4brWkTpgzyHwu9UnIWrY5qlDCmMtvF+KxQFXwfk="; }; postPatch = '' - substituteInPlace pyproject.toml --replace \ + substituteInPlace pyproject.toml --replace-fail \ '"setuptools >= 35.0.2", "wheel >= 0.29.0", "poetry>=0.12"' \ '"poetry-core"' ''; @@ -107,21 +107,12 @@ let hash = "sha256-tWnxGLJT+CRFvkhxFamHxnLXBvoR8tfOvzH1o1i5JJg="; }; postPatch = '' - substituteInPlace pyproject.toml --replace \ + substituteInPlace pyproject.toml --replace-fail \ '"setuptools >= 35.0.2", "wheel >= 0.29.0", "poetry>=0.12"' \ '"poetry-core"' ''; }); - amberelectric = super.amberelectric.overridePythonAttrs (oldAttrs: rec { - version = "1.0.4"; - src = fetchPypi { - inherit (oldAttrs) pname; - inherit version; - hash = "sha256-5SWJnTxRm6mzP0RxrgA+jnV+Gp23WjqQA57wbT2V9Dk="; - }; - }); - anova-wifi = super.anova-wifi.overridePythonAttrs (old: rec { version = "0.10.3"; src = fetchFromGitHub { @@ -141,8 +132,8 @@ let }; postPatch = '' substituteInPlace pyproject.toml \ - --replace "poetry>=1.0.0b1" "poetry-core" \ - --replace "poetry.masonry" "poetry.core.masonry" + --replace-fail "poetry>=1.0.0b1" "poetry-core" \ + --replace-fail "poetry.masonry" "poetry.core.masonry" ''; propagatedBuildInputs = oldAttrs.propagatedBuildInputs ++ [ self.pytz @@ -198,14 +189,25 @@ let }; }); - justnimbus = super.justnimbus.overridePythonAttrs (oldAttrs: rec { - version = "0.6.0"; + lxml = super.lxml.overridePythonAttrs (oldAttrs: rec { + version = "5.1.0"; + pyprojet = true; + src = fetchFromGitHub { - owner = "kvanzuijlen"; - repo = "justnimbus"; - rev = "refs/tags/${version}"; - hash = "sha256-uQ5Nc5sxqHeAuavyfX4Q6Umsd54aileJjFwOOU6X7Yg="; + owner = "lxml"; + repo = "lxml"; + rev = "refs/tags/lxml-${version}"; + hash = "sha256-eWLYzZWatYDmhuBTZynsdytlNFKKmtWQ1XIyzVD8sDY="; }; + + nativeBuildInputs = with self; [ + cython_3 + setuptools + libxml2.dev + libxslt.dev + ]; + + patches = []; }); notifications-android-tv = super.notifications-android-tv.overridePythonAttrs (oldAttrs: rec { @@ -303,16 +305,6 @@ let }; }); - pydrawise = super.pydrawise.overridePythonAttrs (oldAttrs: rec { - version = "2023.11.0"; - src = fetchFromGitHub { - owner = "dknowles2"; - repo = "pydrawise"; - rev = "refs/tags/${version}"; - hash = "sha256-gKOyTvdETGzKlpU67UKaHYTIvnAX9znHIynP3BiVbt4="; - }; - }); - pykaleidescape = super.pykaleidescape.overridePythonAttrs (oldAttrs: rec { version = "1.0.1"; src = fetchFromGitHub { @@ -332,35 +324,6 @@ let }; }); - python-kasa = super.python-kasa.overridePythonAttrs (oldAttrs: rec { - version = "0.5.4"; - src = fetchFromGitHub { - owner = "python-kasa"; - repo = "python-kasa"; - rev = "refs/tags/${version}"; - hash = "sha256-wGPMrYaTtKkkNW88eyiiciFcBSTRqqChYi6e15WUCHo="; - }; - }); - - python-roborock = super.python-roborock.overridePythonAttrs (oldAttrs: rec { - version = "0.38.0"; - src = fetchFromGitHub { - owner = "humbertogontijo"; - repo = "python-roborock"; - rev = "refs/tags/v${version}"; - hash = "sha256-jYESUMhLb5oiM3PWIIIU4dn/waGUnCAaXe0URnIq0C8="; - }; - }); - - python-slugify = super.python-slugify.overridePythonAttrs (oldAttrs: rec { - pname = "python-slugify"; - version = "4.0.1"; - src = fetchPypi { - inherit pname version; - hash = "sha256-aaUXdm4AwSaOW7/A0BCgqFCN4LGNMK1aH/NX+K5yQnA="; - }; - }); - pytradfri = super.pytradfri.overridePythonAttrs (oldAttrs: rec { version = "9.0.1"; src = fetchFromGitHub { @@ -371,16 +334,6 @@ let }; }); - tesla-powerwall = super.tesla-powerwall.overridePythonAttrs (oldAttrs: rec { - version = "0.3.19"; - src = fetchFromGitHub { - owner = "jrester"; - repo = "tesla_powerwall"; - rev = "refs/tags/v${version}"; - hash = "sha256-ClrMgPAMBtDMfD6hCJIN1u4mp75QW+c3re28v3FreQg="; - }; - }); - versioningit = super.versioningit.overridePythonAttrs (oldAttrs: rec { version = "2.2.0"; src = fetchPypi { @@ -465,7 +418,7 @@ let extraBuildInputs = extraPackages python.pkgs; # Don't forget to run parse-requirements.py after updating - hassVersion = "2024.1.6"; + hassVersion = "2024.2.1"; in python.pkgs.buildPythonApplication rec { pname = "homeassistant"; @@ -483,13 +436,13 @@ in python.pkgs.buildPythonApplication rec { owner = "home-assistant"; repo = "core"; rev = "refs/tags/${version}"; - hash = "sha256-zCpdOl16ZkO9mr0nYZg1mlnGNaPaX0RALFEDRHGfKvM="; + hash = "sha256-PtBDSxl0744rytMeMOTAj60eERzANzD2dyd4sPivgqQ="; }; # Secondary source is pypi sdist for translations sdist = fetchPypi { inherit pname version; - hash = "sha256-ipAw+vqePa5KA/Gqhl3WsQbzmzMXjmVx0NvbrM84SKg="; + hash = "sha256-iLCHoDfZ1gz+LxNxIiKNsSDaL2Taq8B3Huu000eXSxc="; }; nativeBuildInputs = with python.pkgs; [ @@ -498,19 +451,12 @@ in python.pkgs.buildPythonApplication rec { ]; pythonRelaxDeps = [ - "awesomeversion" + "attrs" "ciso8601" - "cryptography" - "home-assistant-bluetooth" - "httpx" - "jinja2" - "lru-dict" "orjson" "pyopenssl" "typing-extensions" "urllib3" - "voluptuous" - "yarl" ]; # extract translations from pypi sdist @@ -521,7 +467,7 @@ in python.pkgs.buildPythonApplication rec { # leave this in, so users don't have to constantly update their downstream patch handling patches = [ # Follow symlinks in /var/lib/hass/www - ./patches/static-symlinks.patch + ./patches/static-follow-symlinks.patch # Patch path to ffmpeg binary (substituteAll { @@ -531,7 +477,7 @@ in python.pkgs.buildPythonApplication rec { ]; postPatch = '' - substituteInPlace tests/test_config.py --replace '"/usr"' '"/build/media"' + substituteInPlace tests/test_config.py --replace-fail '"/usr"' '"/build/media"' sed -i 's/setuptools[~=]/setuptools>/' pyproject.toml sed -i 's/wheel[~=]/wheel>/' pyproject.toml diff --git a/pkgs/servers/home-assistant/frontend.nix b/pkgs/servers/home-assistant/frontend.nix index c3584697ea01..24ee86b9b25f 100644 --- a/pkgs/servers/home-assistant/frontend.nix +++ b/pkgs/servers/home-assistant/frontend.nix @@ -4,7 +4,7 @@ buildPythonPackage rec { # 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 = "20240104.0"; + version = "20240207.1"; format = "wheel"; src = fetchPypi { @@ -12,7 +12,7 @@ buildPythonPackage rec { pname = "home_assistant_frontend"; dist = "py3"; python = "py3"; - hash = "sha256-AQkrnU5UKsrl02CXDNf/aMTPII39poWJoZ4nBpySTZE="; + hash = "sha256-uGBVha7nJvYua1rZXlIJGhUzEm5wSrhazrOBUi3omJk="; }; # there is nothing to strip in this package diff --git a/pkgs/servers/home-assistant/intents.nix b/pkgs/servers/home-assistant/intents.nix index 8e5921ceb2ff..8bdd0542b926 100644 --- a/pkgs/servers/home-assistant/intents.nix +++ b/pkgs/servers/home-assistant/intents.nix @@ -1,73 +1,41 @@ { lib , buildPythonPackage -, fetchFromGitHub +, fetchPypi , pythonOlder -# build -, hassil -, jinja2 -, pyyaml -, regex -, voluptuous -, python +# build-system , setuptools -, wheel - -# tests -, pytest-xdist -, pytestCheckHook }: buildPythonPackage rec { pname = "home-assistant-intents"; - version = "2024.1.2"; + version = "2024.2.2"; format = "pyproject"; disabled = pythonOlder "3.9"; - src = fetchFromGitHub { - owner = "home-assistant"; - repo = "intents-package"; - rev = "refs/tags/${version}"; - hash = "sha256-uOrSvkzymG31nRmAgrn6z1IDJWahxqXHcPDflLPRVT4="; - fetchSubmodules = true; + src = fetchPypi { + inherit pname version; + hash = "sha256-Tb9ZZvs5Wyzm2TS5INUSua4Y3/2H+kHEhjpfYWJi+d0="; }; postPatch = '' - substituteInPlace pyproject.toml --replace 'requires = ["setuptools~=62.3", "wheel~=0.37.1"]' 'requires = ["setuptools", "wheel"]' + substituteInPlace pyproject.toml --replace-fail \ + 'requires = ["setuptools~=62.3", "wheel~=0.37.1"]' \ + 'requires = ["setuptools"]' ''; nativeBuildInputs = [ - hassil - jinja2 - pyyaml - regex setuptools - wheel - voluptuous ]; - postInstall = '' - pushd intents - # https://github.com/home-assistant/intents/blob/main/script/package#L18 - ${python.pythonOnBuildForHost.interpreter} -m script.intentfest merged_output $out/${python.sitePackages}/home_assistant_intents/data - popd - ''; - - checkInputs = [ - pytest-xdist - pytestCheckHook - ]; + # sdist does not ship tests + doCheck = false; pytestFlagsArray = [ "intents/tests" ]; - disabledTests = [ - # AssertionError: Recognition failed for 'put apples on the list' - "test_shopping_list_HassShoppingListAddItem" - ]; - meta = with lib; { description = "Intents to be used with Home Assistant"; homepage = "https://github.com/home-assistant/intents"; diff --git a/pkgs/servers/home-assistant/patches/static-follow-symlinks.patch b/pkgs/servers/home-assistant/patches/static-follow-symlinks.patch new file mode 100644 index 000000000000..c99a8d88a1e8 --- /dev/null +++ b/pkgs/servers/home-assistant/patches/static-follow-symlinks.patch @@ -0,0 +1,12 @@ +diff --git a/homeassistant/components/http/static.py b/homeassistant/components/http/static.py +index e6e773d4c0..b53e0b4a11 100644 +--- a/homeassistant/components/http/static.py ++++ b/homeassistant/components/http/static.py +@@ -31,7 +31,6 @@ def _get_file_path(rel_url: str, directory: Path) -> Path | None: + # where the static dir is totally different + raise HTTPForbidden + filepath: Path = directory.joinpath(filename).resolve() +- filepath.relative_to(directory) + # on opening a dir, load its contents if allowed + if filepath.is_dir(): + return None diff --git a/pkgs/servers/home-assistant/patches/static-symlinks.patch b/pkgs/servers/home-assistant/patches/static-symlinks.patch deleted file mode 100644 index 7784a60f6b2a..000000000000 --- a/pkgs/servers/home-assistant/patches/static-symlinks.patch +++ /dev/null @@ -1,37 +0,0 @@ -diff --git a/homeassistant/components/frontend/__init__.py b/homeassistant/components/frontend/__init__.py -index 2ec991750f..9a937006ce 100644 ---- a/homeassistant/components/frontend/__init__.py -+++ b/homeassistant/components/frontend/__init__.py -@@ -383,7 +383,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: - - local = hass.config.path("www") - if os.path.isdir(local): -- hass.http.register_static_path("/local", local, not is_dev) -+ hass.http.register_static_path("/local", local, not is_dev, follow_symlinks=True) - - # Can be removed in 2023 - hass.http.register_redirect("/config/server_control", "/developer-tools/yaml") -diff --git a/homeassistant/components/http/__init__.py b/homeassistant/components/http/__init__.py -index 122b7b79ce..3cf2b7e0db 100644 ---- a/homeassistant/components/http/__init__.py -+++ b/homeassistant/components/http/__init__.py -@@ -411,16 +411,16 @@ class HomeAssistantHTTP: - ) - - def register_static_path( -- self, url_path: str, path: str, cache_headers: bool = True -+ self, url_path: str, path: str, cache_headers: bool = True, follow_symlinks: bool = False - ) -> None: - """Register a folder or file to serve as a static path.""" - if os.path.isdir(path): - if cache_headers: - resource: CachingStaticResource | web.StaticResource = ( -- CachingStaticResource(url_path, path) -+ CachingStaticResource(url_path, path, follow_symlinks=follow_symlinks) - ) - else: -- resource = web.StaticResource(url_path, path) -+ resource = web.StaticResource(url_path, path, follow_symlinks=follow_symlinks) - self.app.router.register_resource(resource) - self.app["allow_configured_cors"](resource) - return diff --git a/pkgs/servers/home-assistant/stubs.nix b/pkgs/servers/home-assistant/stubs.nix index 6638a50683c4..536dce6652a7 100644 --- a/pkgs/servers/home-assistant/stubs.nix +++ b/pkgs/servers/home-assistant/stubs.nix @@ -8,7 +8,7 @@ buildPythonPackage rec { pname = "homeassistant-stubs"; - version = "2024.1.6"; + version = "2024.2.1"; format = "pyproject"; disabled = python.version != home-assistant.python.version; @@ -17,7 +17,7 @@ buildPythonPackage rec { owner = "KapJI"; repo = "homeassistant-stubs"; rev = "refs/tags/${version}"; - hash = "sha256-htFz3Cw5AvI1h2YvECOJdMA4N3JAQRRRhx1tfR4h5co="; + hash = "sha256-1a2iwyRyXOD8iaTzdnEGfwCgw6dU2bV1iWpoD7s35QI="; }; nativeBuildInputs = [ @@ -27,7 +27,7 @@ buildPythonPackage rec { postPatch = '' # Relax constraint to year and month - substituteInPlace pyproject.toml --replace \ + substituteInPlace pyproject.toml --replace-fail \ 'homeassistant = "${version}"' \ 'homeassistant = "~${lib.versions.majorMinor home-assistant.version}"' ''; |