about summary refs log tree commit diff
path: root/nixpkgs/pkgs/servers/home-assistant
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/servers/home-assistant')
-rw-r--r--nixpkgs/pkgs/servers/home-assistant/component-packages.nix187
-rw-r--r--nixpkgs/pkgs/servers/home-assistant/custom-components/better_thermostat/default.nix4
-rw-r--r--nixpkgs/pkgs/servers/home-assistant/custom-components/default.nix16
-rw-r--r--nixpkgs/pkgs/servers/home-assistant/custom-components/homematicip_local/default.nix4
-rw-r--r--nixpkgs/pkgs/servers/home-assistant/custom-components/indego/default.nix30
-rw-r--r--nixpkgs/pkgs/servers/home-assistant/custom-components/local_luftdaten/default.nix25
-rw-r--r--nixpkgs/pkgs/servers/home-assistant/custom-components/midea-air-appliances-lan/default.nix28
-rw-r--r--nixpkgs/pkgs/servers/home-assistant/custom-components/miele/default.nix4
-rw-r--r--nixpkgs/pkgs/servers/home-assistant/custom-components/moonraker/default.nix4
-rw-r--r--nixpkgs/pkgs/servers/home-assistant/custom-components/smartir/default.nix38
-rw-r--r--nixpkgs/pkgs/servers/home-assistant/custom-components/smartthinq-sensors/default.nix34
-rw-r--r--nixpkgs/pkgs/servers/home-assistant/custom-components/xiaomi_gateway3/default.nix32
-rw-r--r--nixpkgs/pkgs/servers/home-assistant/custom-components/xiaomi_miot/default.nix38
-rw-r--r--nixpkgs/pkgs/servers/home-assistant/custom-components/yassi/default.nix28
-rw-r--r--nixpkgs/pkgs/servers/home-assistant/custom-lovelace-modules/mushroom/default.nix6
-rw-r--r--nixpkgs/pkgs/servers/home-assistant/default.nix78
-rw-r--r--nixpkgs/pkgs/servers/home-assistant/frontend.nix4
-rw-r--r--nixpkgs/pkgs/servers/home-assistant/intents.nix55
-rw-r--r--nixpkgs/pkgs/servers/home-assistant/stubs.nix4
-rwxr-xr-xnixpkgs/pkgs/servers/home-assistant/update-component-packages.py (renamed from nixpkgs/pkgs/servers/home-assistant/parse-requirements.py)4
-rwxr-xr-xnixpkgs/pkgs/servers/home-assistant/update.py4
21 files changed, 504 insertions, 123 deletions
diff --git a/nixpkgs/pkgs/servers/home-assistant/component-packages.nix b/nixpkgs/pkgs/servers/home-assistant/component-packages.nix
index ebed5dab1989..186956baa9ff 100644
--- a/nixpkgs/pkgs/servers/home-assistant/component-packages.nix
+++ b/nixpkgs/pkgs/servers/home-assistant/component-packages.nix
@@ -1,8 +1,8 @@
-# Generated by parse-requirements.py
+# Generated by update-component-packages.py
 # Do not edit!
 
 {
-  version = "2024.3.3";
+  version = "2024.4.4";
   components = {
     "3_day_blinds" = ps: with ps; [
     ];
@@ -97,7 +97,8 @@
       airtouch4pyapi
     ];
     "airtouch5" = ps: with ps; [
-    ]; # missing inputs: airtouch5py
+      airtouch5py
+    ];
     "airvisual" = ps: with ps; [
       pyairvisual
     ];
@@ -162,7 +163,8 @@
       sqlalchemy
     ];
     "analytics_insights" = ps: with ps; [
-    ]; # missing inputs: python-homeassistant-analytics
+      python-homeassistant-analytics
+    ];
     "android_ip_webcam" = ps: with ps; [
       pydroid-ipcam
     ];
@@ -283,7 +285,6 @@
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      janus
       paho-mqtt
     ];
     "aseko_pool_live" = ps: with ps; [
@@ -362,7 +363,6 @@
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
       axis
-      janus
       paho-mqtt
     ];
     "azure_devops" = ps: with ps; [
@@ -572,7 +572,8 @@
     "brel_home" = ps: with ps; [
     ];
     "bring" = ps: with ps; [
-    ]; # missing inputs: bring-api
+      bring-api
+    ];
     "broadlink" = ps: with ps; [
       broadlink
     ];
@@ -856,7 +857,6 @@
       home-assistant-frontend
       home-assistant-intents
       ifaddr
-      janus
       mutagen
       numpy
       pillow
@@ -951,7 +951,7 @@
     "digital_loggers" = ps: with ps; [
     ];
     "digital_ocean" = ps: with ps; [
-      digital-ocean
+      python-digitalocean
     ];
     "directv" = ps: with ps; [
       directv
@@ -1056,7 +1056,6 @@
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
       dropmqttapi
-      janus
       paho-mqtt
     ];
     "dsmr" = ps: with ps; [
@@ -1066,7 +1065,6 @@
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      janus
       paho-mqtt
     ];
     "dte_energy_bridge" = ps: with ps; [
@@ -1096,7 +1094,6 @@
       dynalite-panel
       fnv-hash-fast
       home-assistant-frontend
-      janus
       pillow
       psutil-home-assistant
       sqlalchemy
@@ -1183,6 +1180,9 @@
       pypca
     ];
     "elvia" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
       fnv-hash-fast
       psutil-home-assistant
       sqlalchemy
@@ -1386,11 +1386,13 @@
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      janus
     ];
     "filesize" = ps: with ps; [
     ];
     "filter" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
       fnv-hash-fast
       psutil-home-assistant
       sqlalchemy
@@ -1560,7 +1562,6 @@
       aiohttp-zlib-ng
       fnv-hash-fast
       home-assistant-frontend
-      janus
       pillow
       psutil-home-assistant
       sqlalchemy
@@ -1574,13 +1575,15 @@
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      janus
       paho-mqtt
       python-fullykiosk
     ];
     "futurenow" = ps: with ps; [
       pyfnip
     ];
+    "fyta" = ps: with ps; [
+      fyta-cli
+    ];
     "garadget" = ps: with ps; [
     ];
     "garages_amsterdam" = ps: with ps; [
@@ -1633,6 +1636,9 @@
     "generic_hygrostat" = ps: with ps; [
     ];
     "generic_thermostat" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
       fnv-hash-fast
       psutil-home-assistant
       sqlalchemy
@@ -1917,6 +1923,9 @@
       sqlalchemy
     ];
     "history_stats" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
       fnv-hash-fast
       psutil-home-assistant
       sqlalchemy
@@ -1956,7 +1965,6 @@
       aiohttp-zlib-ng
       bellows
       fnv-hash-fast
-      janus
       pillow
       psutil-home-assistant
       pyserial
@@ -1978,7 +1986,6 @@
       aiohttp-zlib-ng
       bellows
       fnv-hash-fast
-      janus
       pillow
       psutil-home-assistant
       pyserial
@@ -2000,7 +2007,6 @@
       aiohttp-zlib-ng
       bellows
       fnv-hash-fast
-      janus
       pillow
       psutil-home-assistant
       pyserial
@@ -2022,7 +2028,6 @@
       aiohttp-zlib-ng
       bellows
       fnv-hash-fast
-      janus
       pillow
       psutil-home-assistant
       pyserial
@@ -2355,7 +2360,6 @@
       fnv-hash-fast
       home-assistant-frontend
       insteon-frontend-home-assistant
-      janus
       pillow
       psutil-home-assistant
       pyinsteon
@@ -2526,6 +2530,9 @@
       pykira
     ];
     "kitchen_sink" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
       fnv-hash-fast
       psutil-home-assistant
       sqlalchemy
@@ -2542,7 +2549,6 @@
       aiohttp-zlib-ng
       fnv-hash-fast
       home-assistant-frontend
-      janus
       knx-frontend
       pillow
       psutil-home-assistant
@@ -2583,7 +2589,34 @@
     "lacrosse_view" = ps: with ps; [
     ]; # missing inputs: lacrosse-view
     "lamarzocco" = 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
       lmcloud
+      mutagen
+      psutil-home-assistant
+      pyserial
+      pyudev
+      sqlalchemy
+      webrtc-noise-gain
+      zeroconf
     ];
     "lametric" = ps: with ps; [
       aiohttp-cors
@@ -2798,7 +2831,6 @@
       aiohttp-zlib-ng
       fnv-hash-fast
       home-assistant-frontend
-      janus
       pillow
       psutil-home-assistant
       sqlalchemy
@@ -2839,6 +2871,10 @@
       webrtc-noise-gain
     ];
     "lovelace" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
+      pillow
     ];
     "luci" = ps: with ps; [
       openwrt-luci-rpc
@@ -2887,7 +2923,6 @@
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      janus
       paho-mqtt
     ];
     "map" = ps: with ps; [
@@ -2896,7 +2931,6 @@
       aiohttp-zlib-ng
       fnv-hash-fast
       home-assistant-frontend
-      janus
       pillow
       psutil-home-assistant
       sqlalchemy
@@ -3205,6 +3239,35 @@
       psutil-home-assistant
       sqlalchemy
     ];
+    "motionblinds_ble" = 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: motionblindsble
     "motioneye" = ps: with ps; [
       aiohttp-cors
       aiohttp-fast-url-dispatcher
@@ -3212,7 +3275,8 @@
       motioneye-client
     ];
     "motionmount" = ps: with ps; [
-    ]; # missing inputs: python-MotionMount
+      python-motionmount
+    ];
     "mpd" = ps: with ps; [
       mpd2
     ];
@@ -3220,35 +3284,30 @@
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      janus
       paho-mqtt
     ];
     "mqtt_eventstream" = ps: with ps; [
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      janus
       paho-mqtt
     ];
     "mqtt_json" = ps: with ps; [
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      janus
       paho-mqtt
     ];
     "mqtt_room" = ps: with ps; [
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      janus
       paho-mqtt
     ];
     "mqtt_statestream" = ps: with ps; [
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      janus
       paho-mqtt
     ];
     "msteams" = ps: with ps; [
@@ -3269,7 +3328,6 @@
       aiohttp-zlib-ng
       fnv-hash-fast
       home-assistant-frontend
-      janus
       pillow
       psutil-home-assistant
       sqlalchemy
@@ -3280,7 +3338,6 @@
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      janus
       paho-mqtt
       pymysensors
     ];
@@ -3467,7 +3524,7 @@
     "number" = ps: with ps; [
     ];
     "nut" = ps: with ps; [
-      pynut2
+      aionut
     ];
     "nutrichef" = ps: with ps; [
     ];
@@ -3494,6 +3551,13 @@
     "ohmconnect" = ps: with ps; [
       defusedxml
     ];
+    "ollama" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
+      hassil
+      home-assistant-intents
+    ]; # missing inputs: ollama-hass
     "ombi" = ps: with ps; [
       pyombi
     ];
@@ -3504,10 +3568,7 @@
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      fnv-hash-fast
       pillow
-      psutil-home-assistant
-      sqlalchemy
     ];
     "oncue" = ps: with ps; [
       aiooncue
@@ -3542,9 +3603,6 @@
     ];
     "openalpr_cloud" = ps: with ps; [
     ];
-    "opencv" = ps: with ps; [
-      numpy
-    ]; # missing inputs: opencv-python-headless
     "openerz" = ps: with ps; [
       openerz-api
     ];
@@ -3581,6 +3639,9 @@
       pyopnsense
     ];
     "opower" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
       fnv-hash-fast
       opower
       psutil-home-assistant
@@ -3636,7 +3697,6 @@
       bellows
       fnv-hash-fast
       ifaddr
-      janus
       pillow
       psutil-home-assistant
       pyroute2
@@ -3675,7 +3735,6 @@
       hass-nabucasa
       hassil
       home-assistant-intents
-      janus
       mutagen
       paho-mqtt
       psutil-home-assistant
@@ -3703,7 +3762,6 @@
       aiohttp-zlib-ng
       fnv-hash-fast
       home-assistant-frontend
-      janus
       pillow
       psutil-home-assistant
       sqlalchemy
@@ -3714,7 +3772,6 @@
       aiohttp-zlib-ng
       fnv-hash-fast
       home-assistant-frontend
-      janus
       pillow
       psutil-home-assistant
       sqlalchemy
@@ -3786,6 +3843,9 @@
       webrtc-noise-gain
     ];
     "plant" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
       fnv-hash-fast
       psutil-home-assistant
       sqlalchemy
@@ -4085,6 +4145,9 @@
       aiorecollect
     ];
     "recorder" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
       fnv-hash-fast
       psutil-home-assistant
       sqlalchemy
@@ -4099,7 +4162,6 @@
       hassil
       home-assistant-frontend
       home-assistant-intents
-      janus
       mutagen
       pillow
       psutil-home-assistant
@@ -4193,7 +4255,8 @@
       rokuecp
     ];
     "romy" = ps: with ps; [
-    ]; # missing inputs: romy
+      romy
+    ];
     "roomba" = ps: with ps; [
       roombapy
     ];
@@ -4388,6 +4451,9 @@
       zeroconf
     ];
     "sensor" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
       fnv-hash-fast
       psutil-home-assistant
       sqlalchemy
@@ -4501,6 +4567,7 @@
       dbus-fast
       fnv-hash-fast
       habluetooth
+      ifaddr
       psutil-home-assistant
       pyserial
       pyudev
@@ -4617,6 +4684,8 @@
     ];
     "smtp" = ps: with ps; [
     ];
+    "smud" = ps: with ps; [
+    ];
     "snapcast" = ps: with ps; [
       snapcast
     ];
@@ -4624,7 +4693,6 @@
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      janus
       paho-mqtt
     ];
     "snmp" = ps: with ps; [
@@ -4765,6 +4833,9 @@
       xmltodict
     ];
     "statistics" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
       fnv-hash-fast
       psutil-home-assistant
       sqlalchemy
@@ -4913,6 +4984,7 @@
       psutil-home-assistant
       sqlalchemy
       systembridgeconnector
+      systembridgemodels
       zeroconf
     ];
     "system_health" = ps: with ps; [
@@ -4952,7 +5024,6 @@
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
       hatasmota
-      janus
       paho-mqtt
     ];
     "tautulli" = ps: with ps; [
@@ -4976,16 +5047,14 @@
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      pysocks
       python-telegram-bot
-    ];
+    ]; # missing inputs: python-telegram-bot.optional-dependencies.socks
     "telegram_bot" = ps: with ps; [
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      pysocks
       python-telegram-bot
-    ];
+    ]; # missing inputs: python-telegram-bot.optional-dependencies.socks
     "tellduslive" = ps: with ps; [
       tellduslive
     ];
@@ -5104,6 +5173,9 @@
     "threshold" = ps: with ps; [
     ];
     "tibber" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
       fnv-hash-fast
       psutil-home-assistant
       pytibber
@@ -5803,7 +5875,6 @@
       aiohttp-zlib-ng
       bellows
       fnv-hash-fast
-      janus
       pillow
       psutil-home-assistant
       pyserial
@@ -5874,6 +5945,7 @@
     "airthings"
     "airthings_ble"
     "airtouch4"
+    "airtouch5"
     "airvisual"
     "airvisual_pro"
     "airzone"
@@ -5887,6 +5959,7 @@
     "ambiclimate"
     "ambient_station"
     "analytics"
+    "analytics_insights"
     "android_ip_webcam"
     "androidtv"
     "androidtv_remote"
@@ -5936,6 +6009,7 @@
     "bond"
     "bosch_shc"
     "braviatv"
+    "bring"
     "broadlink"
     "brother"
     "brottsplatskartan"
@@ -5998,6 +6072,7 @@
     "dnsip"
     "doorbird"
     "dormakaba_dkey"
+    "downloader"
     "dremel_3d_printer"
     "drop_connect"
     "dsmr"
@@ -6078,6 +6153,7 @@
     "frontend"
     "frontier_silicon"
     "fully_kiosk"
+    "fyta"
     "garages_amsterdam"
     "gardena_bluetooth"
     "gdacs"
@@ -6146,6 +6222,7 @@
     "homematic"
     "homematicip_cloud"
     "homewizard"
+    "homeworks"
     "honeywell"
     "html5"
     "http"
@@ -6247,6 +6324,7 @@
     "mailgun"
     "manual"
     "manual_mqtt"
+    "map"
     "matrix"
     "matter"
     "maxcube"
@@ -6281,6 +6359,7 @@
     "mopeka"
     "motion_blinds"
     "motioneye"
+    "motionmount"
     "mqtt"
     "mqtt_eventstream"
     "mqtt_json"
@@ -6424,8 +6503,10 @@
     "rmvtransport"
     "roborock"
     "roku"
+    "romy"
     "roomba"
     "roon"
+    "rova"
     "rpi_power"
     "rss_feed_template"
     "rtsp_to_webrtc"
@@ -6537,8 +6618,6 @@
     "tcp"
     "technove"
     "tedee"
-    "telegram"
-    "telegram_bot"
     "tellduslive"
     "temper"
     "template"
diff --git a/nixpkgs/pkgs/servers/home-assistant/custom-components/better_thermostat/default.nix b/nixpkgs/pkgs/servers/home-assistant/custom-components/better_thermostat/default.nix
index d61d1850e13b..5557e11761df 100644
--- a/nixpkgs/pkgs/servers/home-assistant/custom-components/better_thermostat/default.nix
+++ b/nixpkgs/pkgs/servers/home-assistant/custom-components/better_thermostat/default.nix
@@ -3,13 +3,13 @@
 buildHomeAssistantComponent rec {
   owner = "KartoffelToby";
   domain = "better_thermostat";
-  version = "1.5.0-beta7";
+  version = "1.5.0";
 
   src = fetchFromGitHub {
     owner = "KartoffelToby";
     repo = "better_thermostat";
     rev = "refs/tags/${version}";
-    hash = "sha256-bJURpeBgoxXGR7C9MY/gmNY7OFvBxrJKz2cA61b5hNo=";
+    hash = "sha256-noo96Uks+MHtTbwIoU5gnekp/IwMry0U18X4I1qe4LQ=";
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/servers/home-assistant/custom-components/default.nix b/nixpkgs/pkgs/servers/home-assistant/custom-components/default.nix
index ad63a4bdc0b6..acfcf038f20e 100644
--- a/nixpkgs/pkgs/servers/home-assistant/custom-components/default.nix
+++ b/nixpkgs/pkgs/servers/home-assistant/custom-components/default.nix
@@ -20,8 +20,14 @@
 
   homematicip_local = callPackage ./homematicip_local { };
 
+  indego = callPackage ./indego { };
+
+  local_luftdaten = callPackage ./local_luftdaten { };
+
   localtuya = callPackage ./localtuya {};
 
+  midea-air-appliances-lan = callPackage ./midea-air-appliances-lan {};
+
   miele = callPackage ./miele {};
 
   moonraker = callPackage ./moonraker {};
@@ -32,5 +38,15 @@
 
   sensi = callPackage ./sensi {};
 
+  smartir = callPackage ./smartir {};
+
+  smartthinq-sensors = callPackage ./smartthinq-sensors {};
+
   waste_collection_schedule = callPackage ./waste_collection_schedule {};
+
+  xiaomi_gateway3 = callPackage ./xiaomi_gateway3 {};
+
+  xiaomi_miot = callPackage ./xiaomi_miot {};
+
+  yassi = callPackage ./yassi {};
 }
diff --git a/nixpkgs/pkgs/servers/home-assistant/custom-components/homematicip_local/default.nix b/nixpkgs/pkgs/servers/home-assistant/custom-components/homematicip_local/default.nix
index 26b9f85e1d79..f6dcd994719b 100644
--- a/nixpkgs/pkgs/servers/home-assistant/custom-components/homematicip_local/default.nix
+++ b/nixpkgs/pkgs/servers/home-assistant/custom-components/homematicip_local/default.nix
@@ -7,13 +7,13 @@
 buildHomeAssistantComponent rec {
   owner = "danielperna84";
   domain = "homematicip_local";
-  version = "1.58.0";
+  version = "1.60.1";
 
   src = fetchFromGitHub {
     owner = "danielperna84";
     repo = "custom_homematic";
     rev = "refs/tags/${version}";
-    hash = "sha256-ianM29eF2MN2THS3CTg4tBkd+8pV/m1fg8VvMDhhadg=";
+    hash = "sha256-EJj9zmDdJ+T7yrANmRJuLRCSwvGLy2CkIBsO9H3LIs4=";
   };
 
   dependencies = [
diff --git a/nixpkgs/pkgs/servers/home-assistant/custom-components/indego/default.nix b/nixpkgs/pkgs/servers/home-assistant/custom-components/indego/default.nix
new file mode 100644
index 000000000000..657d8b80a862
--- /dev/null
+++ b/nixpkgs/pkgs/servers/home-assistant/custom-components/indego/default.nix
@@ -0,0 +1,30 @@
+{
+  lib,
+  buildHomeAssistantComponent,
+  fetchFromGitHub,
+  pyindego,
+}:
+
+buildHomeAssistantComponent rec {
+  owner = "jm-73";
+  domain = "indego";
+  version = "5.5.0";
+
+  src = fetchFromGitHub {
+    owner = "jm-73";
+    repo = "Indego";
+    rev = "refs/tags/${version}";
+    hash = "sha256-ur6KOqU6KAseABL0ibpGJ6109wSSZq9HWSVbMIrRSqc=";
+  };
+
+  dependencies = [ pyindego ];
+
+  meta = with lib; {
+    description = "Bosch Indego lawn mower component";
+    changelog = "https://github.com/jm-73/Indego/releases/tag/${version}";
+    homepage = "https://github.com/jm-73/Indego";
+    # https://github.com/jm-73/pyIndego/issues/125
+    license = licenses.unfree;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/home-assistant/custom-components/local_luftdaten/default.nix b/nixpkgs/pkgs/servers/home-assistant/custom-components/local_luftdaten/default.nix
new file mode 100644
index 000000000000..10a75e14ab70
--- /dev/null
+++ b/nixpkgs/pkgs/servers/home-assistant/custom-components/local_luftdaten/default.nix
@@ -0,0 +1,25 @@
+{ lib
+, buildHomeAssistantComponent
+, fetchFromGitHub
+}:
+
+buildHomeAssistantComponent rec {
+  owner = "lichtteil";
+  domain = "local_luftdaten";
+  version = "2.3.1";
+
+  src = fetchFromGitHub {
+    owner = "lichtteil";
+    repo = "local_luftdaten";
+    rev = version;
+    hash = "sha256-68clZgS7Qo62srcZWD3Un9BnNSwQUBr4Z5oBMTC9m8o=";
+  };
+
+  meta = with lib; {
+    changelog = "https://github.com/lichtteil/local_luftdaten/releases/tag/${version}";
+    description = "Custom component for Home Assistant that integrates your (own) local Luftdaten sensor (air quality/particle sensor) without using the cloud";
+    homepage = "https://github.com/lichtteil/local_luftdaten";
+    license = licenses.mit;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/home-assistant/custom-components/midea-air-appliances-lan/default.nix b/nixpkgs/pkgs/servers/home-assistant/custom-components/midea-air-appliances-lan/default.nix
new file mode 100644
index 000000000000..f533b84fd832
--- /dev/null
+++ b/nixpkgs/pkgs/servers/home-assistant/custom-components/midea-air-appliances-lan/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildHomeAssistantComponent
+, fetchFromGitHub
+, midea-beautiful-air
+}:
+
+buildHomeAssistantComponent rec {
+  owner = "nbogojevic";
+  domain = "midea_dehumidifier_lan";
+  version = "0.9.4";
+
+  src = fetchFromGitHub {
+    inherit owner;
+    repo = "homeassistant-midea-air-appliances-lan";
+    rev = "v${version}";
+    hash = "sha256-Fl8qwsW9NdjnYdu7IGQDelXTLqNx5ioUoxkhv+p5L0I=";
+  };
+
+  propagatedBuildInputs = [ midea-beautiful-air ];
+
+  meta = with lib; {
+    description = "Home Assistant custom component adding support for controlling Midea air conditioners and dehumidifiers on local network";
+    homepage = "https://github.com/nbogojevic/homeassistant-midea-air-appliances-lan";
+    changelog = "https://github.com/nbogojevic/homeassistant-midea-air-appliances-lan/releases/tag/v${version}";
+    maintainers = with maintainers; [ k900 ];
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/home-assistant/custom-components/miele/default.nix b/nixpkgs/pkgs/servers/home-assistant/custom-components/miele/default.nix
index 71624f674b4d..3ebdc6283c03 100644
--- a/nixpkgs/pkgs/servers/home-assistant/custom-components/miele/default.nix
+++ b/nixpkgs/pkgs/servers/home-assistant/custom-components/miele/default.nix
@@ -8,13 +8,13 @@
 buildHomeAssistantComponent rec {
   owner = "astrandb";
   domain = "miele";
-  version = "0.1.19";
+  version = "2024.3.0";
 
   src = fetchFromGitHub {
     inherit owner;
     repo = domain;
     rev = "refs/tags/v${version}";
-    hash = "sha256-od7DV10/rkIw9eFMsTRw4bMmhQo9BAmw2rCbKKySeIk=";
+    hash = "sha256-J9n4PFcd87L301B2YktrLcxp5Vu1HwDeCYnrMEJ0+TA=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/servers/home-assistant/custom-components/moonraker/default.nix b/nixpkgs/pkgs/servers/home-assistant/custom-components/moonraker/default.nix
index 660847ddd2e3..efe0654d01cb 100644
--- a/nixpkgs/pkgs/servers/home-assistant/custom-components/moonraker/default.nix
+++ b/nixpkgs/pkgs/servers/home-assistant/custom-components/moonraker/default.nix
@@ -7,13 +7,13 @@
 buildHomeAssistantComponent rec {
   owner = "marcolivierarsenault";
   domain = "moonraker";
-  version = "1.1.1";
+  version = "1.2.0";
 
   src = fetchFromGitHub {
     owner = "marcolivierarsenault";
     repo = "moonraker-home-assistant";
     rev = "refs/tags/${version}";
-    hash = "sha256-jxMi4hmSVBU9ztoHxFINoJo8klirfo6j7gWty7FXFkQ=";
+    hash = "sha256-oFHV9+5byWCOUxUhOvGHNilCZaoOp2xxb33nF8+CYjE=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/servers/home-assistant/custom-components/smartir/default.nix b/nixpkgs/pkgs/servers/home-assistant/custom-components/smartir/default.nix
new file mode 100644
index 000000000000..5dc9eb2473d7
--- /dev/null
+++ b/nixpkgs/pkgs/servers/home-assistant/custom-components/smartir/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildHomeAssistantComponent
+, fetchFromGitHub
+, aiofiles
+, broadlink
+}:
+
+buildHomeAssistantComponent rec {
+  owner = "smartHomeHub";
+  domain = "smartir";
+  version = "1.17.9";
+
+  src = fetchFromGitHub {
+    owner = "smartHomeHub";
+    repo = "SmartIR";
+    rev = version;
+    hash = "sha256-E6TM761cuaeQzlbjA+oZ+wt5HTJAfkF2J3i4P1Wbuic=";
+  };
+
+  propagatedBuildInputs = [
+    aiofiles
+    broadlink
+  ];
+
+  dontBuild = true;
+
+  postInstall = ''
+    cp -r codes $out/custom_components/smartir/
+  '';
+
+  meta = with lib; {
+    changelog = "https://github.com/smartHomeHub/SmartIR/releases/tag/v${version}";
+    description = "Integration for Home Assistant to control climate, TV and fan devices via IR/RF controllers (Broadlink, Xiaomi, MQTT, LOOKin, ESPHome)";
+    homepage = "https://github.com/smartHomeHub/SmartIR";
+    maintainers = with maintainers; [ azuwis ];
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/home-assistant/custom-components/smartthinq-sensors/default.nix b/nixpkgs/pkgs/servers/home-assistant/custom-components/smartthinq-sensors/default.nix
new file mode 100644
index 000000000000..3ebb482939dc
--- /dev/null
+++ b/nixpkgs/pkgs/servers/home-assistant/custom-components/smartthinq-sensors/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildHomeAssistantComponent
+, fetchFromGitHub
+, charset-normalizer
+, pycountry
+, xmltodict
+}:
+
+buildHomeAssistantComponent rec {
+  owner = "ollo69";
+  domain = "smartthinq_sensors";
+  version = "0.39.0";
+
+  src = fetchFromGitHub {
+    inherit owner;
+    repo = "ha-smartthinq-sensors";
+    rev = "v${version}";
+    hash = "sha256-mt5/XHDAUeoMUA1jWdCNXTUgZBQkqabL5Y4MxwxcweY=";
+  };
+
+  propagatedBuildInputs = [
+    charset-normalizer
+    pycountry
+    xmltodict
+  ];
+
+  meta = with lib; {
+    description = "Home Assistant custom integration for SmartThinQ LG devices configurable with Lovelace User Interface";
+    homepage = "https://github.com/ollo69/ha-smartthinq-sensors";
+    changelog = "https://github.com/ollo69/ha-smartthinq-sensors/releases/tag/v${version}";
+    maintainers = with maintainers; [ k900 ];
+    license = licenses.asl20;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/home-assistant/custom-components/xiaomi_gateway3/default.nix b/nixpkgs/pkgs/servers/home-assistant/custom-components/xiaomi_gateway3/default.nix
new file mode 100644
index 000000000000..fd453e0d321c
--- /dev/null
+++ b/nixpkgs/pkgs/servers/home-assistant/custom-components/xiaomi_gateway3/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildHomeAssistantComponent
+, fetchFromGitHub
+, zigpy
+}:
+
+buildHomeAssistantComponent rec {
+  owner = "AlexxIT";
+  domain = "xiaomi_gateway3";
+  version = "4.0.3";
+
+  src = fetchFromGitHub {
+    owner = "AlexxIT";
+    repo = "XiaomiGateway3";
+    rev = "v${version}";
+    hash = "sha256-YGaVQaz3A0yM8AIC02CvMKWMJ3tW3OADYgKY8ViIt5U=";
+  };
+
+  propagatedBuildInputs = [
+    zigpy
+  ];
+
+  dontBuild = true;
+
+  meta = with lib; {
+    changelog = "https://github.com/AlexxIT/XiaomiGateway3/releases/tag/v{version}";
+    description = "Home Assistant custom component for control Xiaomi Multimode Gateway (aka Gateway 3), Xiaomi Multimode Gateway 2, Aqara Hub E1 on default firmwares over LAN";
+    homepage = "https://github.com/AlexxIT/XiaomiGateway3";
+    maintainers = with maintainers; [ azuwis ];
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/home-assistant/custom-components/xiaomi_miot/default.nix b/nixpkgs/pkgs/servers/home-assistant/custom-components/xiaomi_miot/default.nix
new file mode 100644
index 000000000000..0c64655d76df
--- /dev/null
+++ b/nixpkgs/pkgs/servers/home-assistant/custom-components/xiaomi_miot/default.nix
@@ -0,0 +1,38 @@
+{ lib
+, buildHomeAssistantComponent
+, fetchFromGitHub
+, hap-python
+, micloud
+, pyqrcode
+, python-miio
+}:
+
+buildHomeAssistantComponent rec {
+  owner = "al-one";
+  domain = "xiaomi_miot";
+  version = "0.7.17";
+
+  src = fetchFromGitHub {
+    owner = "al-one";
+    repo = "hass-xiaomi-miot";
+    rev = "v${version}";
+    hash = "sha256-IpL4e2mKCdtNu8NtI+xpx4FPW/uj1M5Rk6DswXmSJBk=";
+  };
+
+  propagatedBuildInputs = [
+    hap-python
+    micloud
+    pyqrcode
+    python-miio
+  ];
+
+  dontBuild = true;
+
+  meta = with lib; {
+    changelog = "https://github.com/al-one/hass-xiaomi-miot/releases/tag/${version}";
+    description = "Automatic integrate all Xiaomi devices to HomeAssistant via miot-spec, support Wi-Fi, BLE, ZigBee devices.";
+    homepage = "https://github.com/al-one/hass-xiaomi-miot";
+    maintainers = with maintainers; [ azuwis ];
+    license = licenses.asl20;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/home-assistant/custom-components/yassi/default.nix b/nixpkgs/pkgs/servers/home-assistant/custom-components/yassi/default.nix
new file mode 100644
index 000000000000..266d926b086b
--- /dev/null
+++ b/nixpkgs/pkgs/servers/home-assistant/custom-components/yassi/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildHomeAssistantComponent
+, fetchFromGitHub
+, pysmartthings
+}:
+
+buildHomeAssistantComponent rec {
+  owner = "samuelspagl";
+  domain = "samsung_soundbar";
+  version = "0.4.0b2";
+
+  src = fetchFromGitHub {
+    inherit owner;
+    repo = "ha_samsung_soundbar";
+    rev = version;
+    hash = "sha256-htAUCQe8mpk+GFwxXkPVnWS0m3mZd2hUt+f4qES+W4U=";
+  };
+
+  propagatedBuildInputs = [ pysmartthings ];
+
+  meta = with lib; {
+    description = "A HomeAssistant integration for Samsung Soundbars";
+    homepage = "https://ha-samsung-soundbar.vercel.app/";
+    changelog = "https://github.com/samuelspagl/ha_samsung_soundbar/releases/tag/${version}";
+    maintainers = with maintainers; [ k900 ];
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/home-assistant/custom-lovelace-modules/mushroom/default.nix b/nixpkgs/pkgs/servers/home-assistant/custom-lovelace-modules/mushroom/default.nix
index ad89a24b6603..4b529d6e4016 100644
--- a/nixpkgs/pkgs/servers/home-assistant/custom-lovelace-modules/mushroom/default.nix
+++ b/nixpkgs/pkgs/servers/home-assistant/custom-lovelace-modules/mushroom/default.nix
@@ -5,16 +5,16 @@
 
 buildNpmPackage rec {
   pname = "mushroom";
-  version = "3.5.2";
+  version = "3.5.4";
 
   src = fetchFromGitHub {
     owner = "piitaya";
     repo = "lovelace-mushroom";
     rev = "v${version}";
-    hash = "sha256-mVodC7IEk1Y9ppMdDRXK/8cxQkW+uaC2RzQFnMwNvTQ=";
+    hash = "sha256-ppEXgVrB7C5ZrNmYyXdrnQMbTNU5rTGherNlimMqImM=";
   };
 
-  npmDepsHash = "sha256-g8A8zm7GyASOpuoxuOYGcyUVa6RBc9LGoYLqcFcT64c=";
+  npmDepsHash = "sha256-4B295Wc4tj+Rhse4521sCGNv/WMrNImxZwtTFkFp14c=";
 
   installPhase = ''
     runHook preInstall
diff --git a/nixpkgs/pkgs/servers/home-assistant/default.nix b/nixpkgs/pkgs/servers/home-assistant/default.nix
index 797b2ecae5f6..0f90061ad61f 100644
--- a/nixpkgs/pkgs/servers/home-assistant/default.nix
+++ b/nixpkgs/pkgs/servers/home-assistant/default.nix
@@ -39,6 +39,15 @@ let
         };
       });
 
+      aioautomower = super.aioautomower.overridePythonAttrs (oldAttrs: rec {
+        version = "2024.3.4";
+        src = fetchFromGitHub {
+          inherit (oldAttrs.src) owner repo;
+          rev = "refs/tags/${version}";
+          hash = "sha256-dk8HfIiQOKq7Ky+vYa3wKmTS78gTw6J0yyQT2Folpp0=";
+        };
+      });
+
       aioelectricitymaps = super.aioelectricitymaps.overridePythonAttrs (oldAttrs: rec {
         version = "0.4.0";
         src = fetchFromGitHub {
@@ -134,19 +143,6 @@ let
         ];
       });
 
-      bluecurrent-api = super.bluecurrent-api.overridePythonAttrs (oldAttrs: rec {
-        version = "1.0.6";
-        src = fetchPypi {
-          pname = "bluecurrent-api";
-          inherit version;
-          hash = "sha256-XHVdtkiG0ff/OY8g+W5iur7OAyhhk1UGA+XUfB2L8/o=";
-        };
-        build-system = oldAttrs.build-system ++ (with self; [
-          pythonRelaxDepsHook
-        ]);
-        pythonRemoveDeps = [ "asyncio" ];
-      });
-
       debugpy = super.debugpy.overridePythonAttrs (oldAttrs: {
         # tests are deadlocking too often
         # https://github.com/NixOS/nixpkgs/issues/262000
@@ -235,6 +231,15 @@ let
         };
       });
 
+      jaraco-functools = super.jaraco-functools.overridePythonAttrs (oldAttrs: rec {
+        version = "3.9.0";
+        src = fetchPypi {
+          pname = "jaraco.functools";
+          inherit version;
+          hash = "sha256-ixN7D+rMF/70us7gTAEcnobyNBCZyHCh0S0743sypjg=";
+        };
+      });
+
       lmcloud = super.lmcloud.overridePythonAttrs (oldAttrs: rec {
         version = "0.4.35";
         src = fetchFromGitHub {
@@ -257,7 +262,7 @@ let
         };
 
         nativeBuildInputs = with self; [
-          cython_3
+          cython
           setuptools
           libxml2.dev
           libxslt.dev
@@ -383,6 +388,13 @@ let
           rev = "refs/tags/${version}";
           hash = "sha256-vi5f4V0nPb9K3nwdmwMDoNE85Or6haOWjMY4d/2Fj2s=";
         };
+        dependencies = with self; [
+          aiohttp
+          async-timeout
+          gql
+          python-dateutil
+          websockets
+        ];
       });
 
       pykaleidescape = super.pykaleidescape.overridePythonAttrs (oldAttrs: rec {
@@ -424,26 +436,6 @@ let
         };
       });
 
-      pywaze = super.pywaze.overridePythonAttrs (oldAttrs: rec {
-        version = "0.5.1";
-        src = fetchFromGitHub {
-          owner = "eifinger";
-          repo = "pywaze";
-          rev = "refs/tags/v${version}";
-          hash = "sha256-r7ROEdgHdjXkveVUbuALHtwCX4IO0lwx9Zo3u6R9I58=";
-        };
-      });
-
-      sqlalchemy = super.sqlalchemy.overridePythonAttrs (oldAttrs: rec {
-        version = "2.0.27";
-        src = fetchFromGitHub {
-          owner = "sqlalchemy";
-          repo = "sqlalchemy";
-          rev = "refs/tags/rel_${lib.replaceStrings [ "." ] [ "_" ] version}";
-          hash = "sha256-6R+A7rVq1olRXj1wMolHhEq418bpr5rsmH8RjxajmmQ=";
-        };
-      });
-
       tesla-powerwall = super.tesla-powerwall.overridePythonAttrs (oldAttrs: rec {
         version = "0.5.1";
         src = fetchFromGitHub {
@@ -540,8 +532,8 @@ let
   # Ensure that we are using a consistent package set
   extraBuildInputs = extraPackages python.pkgs;
 
-  # Don't forget to run parse-requirements.py after updating
-  hassVersion = "2024.3.3";
+  # Don't forget to run update-component-packages.py after updating
+  hassVersion = "2024.4.4";
 
 in python.pkgs.buildPythonApplication rec {
   pname = "homeassistant";
@@ -559,13 +551,13 @@ in python.pkgs.buildPythonApplication rec {
     owner = "home-assistant";
     repo = "core";
     rev = "refs/tags/${version}";
-    hash = "sha256-EutnNqENt1MTmbMe9vtSM+bM5PzvjsfMhpkwXdxWoeI=";
+    hash = "sha256-bZcrFtaO0S22M6Wt2otK8rCg+NhpXr+/yRFxi02QJJI=";
   };
 
   # Secondary source is pypi sdist for translations
   sdist = fetchPypi {
     inherit pname version;
-    hash = "sha256-9i8snvozDKgvcEQfk9KTYfqHxQbDBluvArXYVVnNvnA=";
+    hash = "sha256-NyIBFpDstX1MEoLS9p7GXl/+V6xB2hklNf2LmNLUMQk=";
   };
 
   nativeBuildInputs = with python.pkgs; [
@@ -574,6 +566,7 @@ in python.pkgs.buildPythonApplication rec {
   ];
 
   pythonRelaxDeps = [
+    "aiohttp"
     "attrs"
     "bcrypt"
     "ciso8601"
@@ -581,6 +574,7 @@ in python.pkgs.buildPythonApplication rec {
     "hass-nabucasa"
     "httpx"
     "orjson"
+    "pillow"
     "pyopenssl"
     "typing-extensions"
     "urllib3"
@@ -625,6 +619,7 @@ in python.pkgs.buildPythonApplication rec {
     certifi
     ciso8601
     cryptography
+    fnv-hash-fast
     hass-nabucasa
     httpx
     home-assistant-bluetooth
@@ -633,12 +628,15 @@ in python.pkgs.buildPythonApplication rec {
     lru-dict
     orjson
     packaging
+    pillow
     pip
+    psutil-home-assistant
     pyopenssl
     pyjwt
     python-slugify
     pyyaml
     requests
+    sqlalchemy
     typing-extensions
     ulid-transform
     urllib3
@@ -738,6 +736,10 @@ in python.pkgs.buildPythonApplication rec {
         package = home-assistant;
         command = "hass --version";
       };
+      withoutCheckDeps = home-assistant.overridePythonAttrs {
+        pname = "home-assistant-without-check-deps";
+        doCheck = false;
+      };
     };
   };
 
diff --git a/nixpkgs/pkgs/servers/home-assistant/frontend.nix b/nixpkgs/pkgs/servers/home-assistant/frontend.nix
index ec699e83164a..afa2c53ca3f7 100644
--- a/nixpkgs/pkgs/servers/home-assistant/frontend.nix
+++ b/nixpkgs/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 = "20240307.0";
+  version = "20240404.2";
   format = "wheel";
 
   src = fetchPypi {
@@ -12,7 +12,7 @@ buildPythonPackage rec {
     pname = "home_assistant_frontend";
     dist = "py3";
     python = "py3";
-    hash = "sha256-Wy5TzJ6+Dbkk51TMt9zGIfjI7gMrT4mK0IIRnl4byVE=";
+    hash = "sha256-xCpQHzfXXt9aOWWVGYtt9NYws//ZPjI/owXBQafb31k=";
   };
 
   # there is nothing to strip in this package
diff --git a/nixpkgs/pkgs/servers/home-assistant/intents.nix b/nixpkgs/pkgs/servers/home-assistant/intents.nix
index d0c77694413c..744adc8b4973 100644
--- a/nixpkgs/pkgs/servers/home-assistant/intents.nix
+++ b/nixpkgs/pkgs/servers/home-assistant/intents.nix
@@ -1,36 +1,67 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
 , pythonOlder
 
 # build-system
 , setuptools
+
+# codegen
+, hassil
+, python
+, pyyaml
+, voluptuous
+, regex
+, jinja2
+
+# tests
+, pytest-xdist
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "home-assistant-intents";
-  version = "2024.3.12";
-  format = "pyproject";
+  version = "2024.4.3";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-9oMn5ogHcuopAnXgATu9xlBBBMeWJ9RT5C//xJ5FOBI=";
+  src = fetchFromGitHub {
+    owner = "home-assistant";
+    repo = "intents-package";
+    rev = "refs/tags/${version}";
+    hash = "sha256-hcstD1qkngZAl/jKLez+4qDs/ZIandkVkY2jrvZqph8=";
+    fetchSubmodules = true;
   };
 
   postPatch = ''
-    substituteInPlace pyproject.toml --replace-fail \
-      'requires = ["setuptools~=62.3", "wheel~=0.37.1"]' \
-      'requires = ["setuptools"]'
+    substituteInPlace pyproject.toml \
+      --replace-fail "setuptools~=62.3" "setuptools" \
+      --replace-fail "wheel~=0.37.1" "wheel"
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
+
+    # build-time codegen; https://github.com/home-assistant/intents/blob/main/requirements.txt#L1-L5
+    hassil
+    pyyaml
+    voluptuous
+    regex
+    jinja2
   ];
 
-  # sdist does not ship tests
-  doCheck = false;
+  postInstall = ''
+    # https://github.com/home-assistant/intents-package/blob/main/script/package#L23-L24
+    PACKAGE_DIR=$out/${python.sitePackages}/home_assistant_intents
+    ${python.pythonOnBuildForHost.interpreter} script/merged_output.py $PACKAGE_DIR/data
+    ${python.pythonOnBuildForHost.interpreter} script/write_languages.py $PACKAGE_DIR/data > $PACKAGE_DIR/languages.py
+  '';
+
+  nativeCheckInputs = [
+    pytest-xdist
+    pytestCheckHook
+  ];
 
   pytestFlagsArray = [
     "intents/tests"
diff --git a/nixpkgs/pkgs/servers/home-assistant/stubs.nix b/nixpkgs/pkgs/servers/home-assistant/stubs.nix
index cefdc1f8746a..d31cf8104dbe 100644
--- a/nixpkgs/pkgs/servers/home-assistant/stubs.nix
+++ b/nixpkgs/pkgs/servers/home-assistant/stubs.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "homeassistant-stubs";
-  version = "2024.3.3";
+  version = "2024.4.4";
   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-Qc+pwG87R57wGyCujMQ6qygDOhRh/FoDf1HTRZS3M6s=";
+    hash = "sha256-BPmHorcyO6a7Ag7FQogkZYh2x3GoMRKiFh+9aSkjE7M=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/servers/home-assistant/parse-requirements.py b/nixpkgs/pkgs/servers/home-assistant/update-component-packages.py
index 4a54f351ac49..10288f5e6d64 100755
--- a/nixpkgs/pkgs/servers/home-assistant/parse-requirements.py
+++ b/nixpkgs/pkgs/servers/home-assistant/update-component-packages.py
@@ -1,5 +1,5 @@
 #! /usr/bin/env nix-shell
-#! nix-shell -i python3 -p "python3.withPackages (ps: with ps; [ packaging rich ])" -p nodePackages.pyright ruff isort
+#! nix-shell -i python3 -p "python3.withPackages (ps: with ps; [ packaging rich ])" -p pyright ruff isort
 #
 # This script downloads Home Assistant's source tarball.
 # Inside the homeassistant/components directory, each integration has an associated manifest.json,
@@ -268,7 +268,7 @@ def main() -> None:
             build_inputs[component] = (attr_paths, extra_attrs, missing_reqs)
 
     with open(os.path.dirname(sys.argv[0]) + "/component-packages.nix", "w") as f:
-        f.write("# Generated by parse-requirements.py\n")
+        f.write("# Generated by update-component-packages.py\n")
         f.write("# Do not edit!\n\n")
         f.write("{\n")
         f.write(f'  version = "{version}";\n')
diff --git a/nixpkgs/pkgs/servers/home-assistant/update.py b/nixpkgs/pkgs/servers/home-assistant/update.py
index c0c3cfdef993..70eb77ce9a1c 100755
--- a/nixpkgs/pkgs/servers/home-assistant/update.py
+++ b/nixpkgs/pkgs/servers/home-assistant/update.py
@@ -1,5 +1,5 @@
 #!/usr/bin/env nix-shell
-#!nix-shell -I nixpkgs=channel:nixpkgs-unstable -i python3 -p "python3.withPackages (ps: with ps; [ aiohttp packaging ])" -p git nurl nodePackages.pyright ruff isort
+#!nix-shell -I nixpkgs=channel:nixpkgs-unstable -i python3 -p "python3.withPackages (ps: with ps; [ aiohttp packaging ])" -p git nurl pyright ruff isort
 
 import asyncio
 import json
@@ -222,7 +222,7 @@ class HomeAssistant:
 
     async def update_components(self):
         await run_async([
-            f"{ROOT}/pkgs/servers/home-assistant/parse-requirements.py"
+            f"{ROOT}/pkgs/servers/home-assistant/update-component-packages.py"
         ])