about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorMartin Weinelt <mweinelt@users.noreply.github.com>2024-01-04 01:01:27 +0100
committerGitHub <noreply@github.com>2024-01-04 01:01:27 +0100
commit9c2f7eb95da907bf9d0818b950652bc5d189892d (patch)
tree0f57566e840a902849c19e3223dbb9d6e8a5cc60 /pkgs
parent7dd34690ec816fe50624466e1c59ce32c2a43b8a (diff)
parent6e3207ae07f0dd9bc5e48fd9251b1544672108e7 (diff)
Merge pull request #278571 from NixOS/home-assistant
home-assistant: 2023.12.4 -> 2024.1.0
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/development/python-modules/aiortsp/default.nix54
-rw-r--r--pkgs/development/python-modules/aioshelly/default.nix4
-rw-r--r--pkgs/development/python-modules/async-upnp-client/default.nix27
-rw-r--r--pkgs/development/python-modules/bellows/default.nix4
-rw-r--r--pkgs/development/python-modules/bluetooth-data-tools/default.nix4
-rw-r--r--pkgs/development/python-modules/brother/default.nix13
-rw-r--r--pkgs/development/python-modules/dbus-fast/default.nix4
-rw-r--r--pkgs/development/python-modules/hass-nabucasa/default.nix13
-rw-r--r--pkgs/development/python-modules/home-assistant-chip-clusters/default.nix4
-rw-r--r--pkgs/development/python-modules/home-assistant-chip-core/default.nix6
-rw-r--r--pkgs/development/python-modules/openwebifpy/default.nix48
-rw-r--r--pkgs/development/python-modules/pyprusalink/default.nix19
-rw-r--r--pkgs/development/python-modules/python-matter-server/default.nix4
-rw-r--r--pkgs/development/python-modules/pyunifiprotect/default.nix4
-rw-r--r--pkgs/development/python-modules/reolink-aio/default.nix6
-rw-r--r--pkgs/development/python-modules/roonapi/default.nix4
-rw-r--r--pkgs/development/python-modules/screenlogicpy/default.nix20
-rw-r--r--pkgs/development/python-modules/zigpy-deconz/default.nix4
-rw-r--r--pkgs/development/python-modules/zwave-js-server-python/default.nix4
-rw-r--r--pkgs/servers/home-assistant/component-packages.nix165
-rw-r--r--pkgs/servers/home-assistant/default.nix83
-rw-r--r--pkgs/servers/home-assistant/frontend.nix4
-rw-r--r--pkgs/servers/home-assistant/intents.nix4
-rwxr-xr-xpkgs/servers/home-assistant/parse-requirements.py1
-rw-r--r--pkgs/servers/home-assistant/tests.nix6
-rw-r--r--pkgs/top-level/python-packages.nix2
26 files changed, 339 insertions, 172 deletions
diff --git a/pkgs/development/python-modules/aiortsp/default.nix b/pkgs/development/python-modules/aiortsp/default.nix
new file mode 100644
index 0000000000000..a988e670070de
--- /dev/null
+++ b/pkgs/development/python-modules/aiortsp/default.nix
@@ -0,0 +1,54 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+
+# build-system
+, setuptools
+
+# dependencies
+, dpkt
+
+# tests
+, mock
+, pytestCheckHook
+, pytest-asyncio
+}:
+
+buildPythonPackage rec {
+  pname = "aiortsp";
+  version = "1.3.7";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "marss";
+    repo = "aiortsp";
+    rev = version;
+    hash = "sha256-bxfnKAzMYh0lhS3he617eGhO7hmNbiwEYHh8k/PZ6r4=";
+  };
+
+  nativeBuildInputs = [
+    setuptools
+  ];
+
+  propagatedBuildInputs = [
+    dpkt
+  ];
+
+  nativeCheckInputs = [
+    mock
+    pytestCheckHook
+    pytest-asyncio
+  ];
+
+  pythonImportsCheck = [
+    "aiortsp"
+  ];
+
+  meta = with lib; {
+    description = "An Asyncio-based RTSP library";
+    homepage = "https://github.com/marss/aiortsp";
+    changelog = "https://github.com/marss/aiortsp/blob/${src.rev}/CHANGELOG.rst";
+    license = licenses.lgpl3Plus;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/pkgs/development/python-modules/aioshelly/default.nix b/pkgs/development/python-modules/aioshelly/default.nix
index e0547c9484fe8..9c53be328f507 100644
--- a/pkgs/development/python-modules/aioshelly/default.nix
+++ b/pkgs/development/python-modules/aioshelly/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "aioshelly";
-  version = "6.1.0";
+  version = "7.0.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.9";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "home-assistant-libs";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-LkcUcGx31GwrbmBWCyEuD5x9yzeszUHBCYSBgTzgz9A=";
+    hash = "sha256-+sE/nppRu6XTvXzWlXc+4clLOI/KvVdfRDl9FUhy8fg=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/async-upnp-client/default.nix b/pkgs/development/python-modules/async-upnp-client/default.nix
index c51c99d00f0b4..426c0b5bd5488 100644
--- a/pkgs/development/python-modules/async-upnp-client/default.nix
+++ b/pkgs/development/python-modules/async-upnp-client/default.nix
@@ -1,22 +1,29 @@
 { lib
 , stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+
+# build-system
+, setuptools
+
+# dependencies
 , aiohttp
 , async-timeout
-, buildPythonPackage
 , defusedxml
-, fetchFromGitHub
+, python-didl-lite
+, voluptuous
+
+# tests
 , pytest-aiohttp
 , pytest-asyncio
 , pytestCheckHook
-, python-didl-lite
-, pythonOlder
-, voluptuous
 }:
 
 buildPythonPackage rec {
   pname = "async-upnp-client";
-  version = "0.36.2";
-  format = "setuptools";
+  version = "0.38.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -24,9 +31,13 @@ buildPythonPackage rec {
     owner = "StevenLooman";
     repo = "async_upnp_client";
     rev = "refs/tags/${version}";
-    hash = "sha256-f3x5adxLHT/C5dXfdBH6stKv0y2nuhbpe8jkJex1DKU=";
+    hash = "sha256-hCgZsoccrHCXTZPnFX5OFhCGnd2WufxWo84jW3k9KiY=";
   };
 
+  nativeBuildInputs = [
+    setuptools
+  ];
+
   propagatedBuildInputs = [
     aiohttp
     async-timeout
diff --git a/pkgs/development/python-modules/bellows/default.nix b/pkgs/development/python-modules/bellows/default.nix
index ce81659f8900a..24052663f1c21 100644
--- a/pkgs/development/python-modules/bellows/default.nix
+++ b/pkgs/development/python-modules/bellows/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "bellows";
-  version = "0.37.4";
+  version = "0.37.6";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "zigpy";
     repo = "bellows";
     rev = "refs/tags/${version}";
-    hash = "sha256-9LrgerS8yC45BKKjBWt/QQlyA6rPsL8AGOI0kFhUosk=";
+    hash = "sha256-S3Yf0C+KInYoDaixlJf+9WSPIcEhfQCdcwEuNQYxugU=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/bluetooth-data-tools/default.nix b/pkgs/development/python-modules/bluetooth-data-tools/default.nix
index 1d2facc1ed1eb..95d6207de10a7 100644
--- a/pkgs/development/python-modules/bluetooth-data-tools/default.nix
+++ b/pkgs/development/python-modules/bluetooth-data-tools/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "bluetooth-data-tools";
-  version = "1.18.0";
+  version = "1.19.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.9";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "Bluetooth-Devices";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-AN0zalYQ4JQCaBDrE4tq2WwVEXz0LBlfvrxNiPL4oOs=";
+    hash = "sha256-G345Nz0iVUQWOCEnf5UqUa49kAXCmNY22y4v+J2/G2Q=";
   };
 
   # The project can build both an optimized cython version and an unoptimized
diff --git a/pkgs/development/python-modules/brother/default.nix b/pkgs/development/python-modules/brother/default.nix
index ae0a4f131e2a1..5e90a4e901320 100644
--- a/pkgs/development/python-modules/brother/default.nix
+++ b/pkgs/development/python-modules/brother/default.nix
@@ -7,22 +7,27 @@
 , pytest-error-for-skips
 , pytestCheckHook
 , pythonOlder
+, setuptools
 }:
 
 buildPythonPackage rec {
   pname = "brother";
-  version = "2.3.0";
-  format = "setuptools";
+  version = "3.0.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.11";
 
   src = fetchFromGitHub {
     owner = "bieniu";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-f55daLPBepNDIfZFAZWdkAvEkNb0cyYQt9LkqyIMrnY=";
+    hash = "sha256-rRzcWT9DcNTBUYxyYYC7WORBbrkgj0toCp2e8ADUN5s=";
   };
 
+  nativeBuildInputs = [
+    setuptools
+  ];
+
   propagatedBuildInputs = [
     dacite
     pysnmplib
diff --git a/pkgs/development/python-modules/dbus-fast/default.nix b/pkgs/development/python-modules/dbus-fast/default.nix
index fd935fabb0a60..c7b9d6e2b2951 100644
--- a/pkgs/development/python-modules/dbus-fast/default.nix
+++ b/pkgs/development/python-modules/dbus-fast/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "dbus-fast";
-  version = "2.20.0";
+  version = "2.21.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "Bluetooth-Devices";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-dvgexjzA/1/0p2xgjTWBQeaEKWEv/7XdhtSkyT/DN6I=";
+    hash = "sha256-P2Czo7XRJLDnR62eLb2lYn97nS5x6LsnYHs47+mvktQ=";
   };
 
   # The project can build both an optimized cython version and an unoptimized
diff --git a/pkgs/development/python-modules/hass-nabucasa/default.nix b/pkgs/development/python-modules/hass-nabucasa/default.nix
index edb90b477d0e9..06c7504ebdec2 100644
--- a/pkgs/development/python-modules/hass-nabucasa/default.nix
+++ b/pkgs/development/python-modules/hass-nabucasa/default.nix
@@ -7,7 +7,6 @@
 , ciso8601
 , cryptography
 , fetchFromGitHub
-, fetchpatch
 , pycognito
 , pytest-aiohttp
 , pytest-timeout
@@ -21,7 +20,7 @@
 
 buildPythonPackage rec {
   pname = "hass-nabucasa";
-  version = "0.74.0";
+  version = "0.75.1";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -30,17 +29,9 @@ buildPythonPackage rec {
     owner = "nabucasa";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-r4Huvn9mBqnASpUd+drwORE+fApLV/l6Y3aO/UIiEC8=";
+    hash = "sha256-VQ5nxkrHt6xp+bk/wqAPJ+srTuf9WyamoLXawW1mKWo=";
   };
 
-  patches = [
-    (fetchpatch {
-      # Add missing wait_for_close mock in AiohttpClientMockResponse
-      url = "https://github.com/NabuCasa/hass-nabucasa/commit/097607e0fe30932ca5cba0c50fda125f90f5f3de.patch";
-      hash = "sha256-ZSh+1kGBb6ltNnd0RaDECXiJDEGJBOw1wN2HXPgfy+o=";
-    })
-  ];
-
   nativeBuildInputs = [
     setuptools
   ];
diff --git a/pkgs/development/python-modules/home-assistant-chip-clusters/default.nix b/pkgs/development/python-modules/home-assistant-chip-clusters/default.nix
index 86c01c1252e7a..8787a8da31e85 100644
--- a/pkgs/development/python-modules/home-assistant-chip-clusters/default.nix
+++ b/pkgs/development/python-modules/home-assistant-chip-clusters/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "home-assistant-chip-clusters";
-  version = "2023.10.2";
+  version = "2023.12.0";
   format = "wheel";
 
   src = fetchPypi {
@@ -15,7 +15,7 @@ buildPythonPackage rec {
     pname = "home_assistant_chip_clusters";
     dist = "py3";
     python = "py3";
-    hash = "sha256-wAXxz0BryZ6i0yaqNp74PfApwMHYQuSLz5prJEiG1YE=";
+    hash = "sha256-4yAfbQBqHMEXWMwJ0kSDs0We/AsHweJ+Tc8aZiWi90w=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/home-assistant-chip-core/default.nix b/pkgs/development/python-modules/home-assistant-chip-core/default.nix
index 91cc9c65b13cd..5f437a150d826 100644
--- a/pkgs/development/python-modules/home-assistant-chip-core/default.nix
+++ b/pkgs/development/python-modules/home-assistant-chip-core/default.nix
@@ -28,7 +28,7 @@
 
 buildPythonPackage rec {
   pname = "home-assistant-chip-core";
-  version = "2023.10.2";
+  version = "2023.12.0";
   format = "wheel";
 
   disabled = pythonOlder "3.7";
@@ -37,11 +37,11 @@ buildPythonPackage rec {
     system = {
       "aarch64-linux" = {
         name = "aarch64";
-        hash = "sha256-KBFXFD5cSVgE57S1cHghU3kPDrbRquAARN95UriPCnM=";
+        hash = "sha256-mWJ3/IKm/kcNztr7+Q9Rhjka9niGOshLvGShS3ugR6g=";
       };
       "x86_64-linux" = {
         name = "x86_64";
-        hash = "sha256-9x7pjgERvsBuyol8LiuPOlFZ5Up92N9HYg1mH9/0HAU=";
+        hash = "sha256-wRJWgT+uycCwNKMgHaiACv1y+AvOLrPOpcm2I8hVAxk=";
       };
     }.${stdenv.system} or (throw "Unsupported system");
   in fetchPypi {
diff --git a/pkgs/development/python-modules/openwebifpy/default.nix b/pkgs/development/python-modules/openwebifpy/default.nix
index 4661bb4dcf4cf..ab054c3b82886 100644
--- a/pkgs/development/python-modules/openwebifpy/default.nix
+++ b/pkgs/development/python-modules/openwebifpy/default.nix
@@ -1,31 +1,51 @@
-{ lib, buildPythonPackage, fetchPypi, pythonOlder
-, requests, zeroconf, wakeonlan
-, python }:
+{ lib
+, aiohttp
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+, pythonOlder
+, setuptools
+, yarl
+}:
 
 buildPythonPackage rec {
   pname = "openwebifpy";
-  version = "3.2.7";
-  format = "setuptools";
-  disabled = pythonOlder "3.6";
+  version = "4.0.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0n9vi6b0y8b41fd7m9p361y3qb5m3b9p9d8g4fasqi7yy4mw2hns";
+    hash = "sha256-D2NCTn1Q3/AknmEAAOZO4d7i2mpM/kMlt94RaLmmnjM=";
   };
 
+  nativeBuildInputs = [
+    setuptools
+  ];
+
   propagatedBuildInputs = [
-    requests
-    zeroconf
-    wakeonlan
+    aiohttp
+    yarl
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "openwebif"
   ];
 
-  checkPhase = ''
-    ${python.interpreter} setup.py test
-  '';
+  disabledTests = [
+    # https://github.com/autinerd/openwebifpy/issues/1
+    "test_get_picon_name"
+  ];
 
   meta = with lib; {
     description = "Provides a python interface to interact with a device running OpenWebIf";
-    homepage = "https://openwebifpy.readthedocs.io/";
+    homepage = "https://github.com/autinerd/openwebifpy";
+    changelog = "https://github.com/autinerd/openwebifpy/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ hexa ];
   };
diff --git a/pkgs/development/python-modules/pyprusalink/default.nix b/pkgs/development/python-modules/pyprusalink/default.nix
index 97fff5b0687cd..0a1d8afc3bd1c 100644
--- a/pkgs/development/python-modules/pyprusalink/default.nix
+++ b/pkgs/development/python-modules/pyprusalink/default.nix
@@ -2,16 +2,14 @@
 , aiohttp
 , buildPythonPackage
 , fetchFromGitHub
-, fetchpatch
 , pythonOlder
 , setuptools
-, wheel
 }:
 
 buildPythonPackage rec {
   pname = "pyprusalink";
-  version = "1.1.0";
-  format = "pyproject";
+  version = "2.0.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -19,21 +17,11 @@ buildPythonPackage rec {
     owner = "home-assistant-libs";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-XRtbb7kceiqi8pioTWStRo0drCtQfy1t62jCMihlIec=";
+    hash = "sha256-wboyISggzC50cZ+J/NC0ytWXwCLBmBpP9/MtPkRb+Zs=";
   };
 
-  patches = [
-    # https://github.com/home-assistant-libs/pyprusalink/pull/55
-    (fetchpatch {
-      name = "unpin-setuptools-dependency.patch";
-      url = "https://github.com/home-assistant-libs/pyprusalink/commit/8efc3229c491a1763456f0f4017251d5789c6d0a.patch";
-      hash = "sha256-kTu1+IwDrcdqelyK/vfhxw8MQBis5I1jag7YTytKQhs=";
-    })
-  ];
-
   nativeBuildInputs = [
     setuptools
-    wheel
   ];
 
   propagatedBuildInputs = [
@@ -50,6 +38,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Library to communicate with PrusaLink ";
     homepage = "https://github.com/home-assistant-libs/pyprusalink";
+    changelog = "https://github.com/home-assistant-libs/pyprusalink/releases/tag/${version}";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/python-matter-server/default.nix b/pkgs/development/python-modules/python-matter-server/default.nix
index 7d8b5cd3dd153..8c6ccf5754e6f 100644
--- a/pkgs/development/python-modules/python-matter-server/default.nix
+++ b/pkgs/development/python-modules/python-matter-server/default.nix
@@ -28,7 +28,7 @@
 
 buildPythonPackage rec {
   pname = "python-matter-server";
-  version = "5.0.3";
+  version = "5.1.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.10";
@@ -37,7 +37,7 @@ buildPythonPackage rec {
     owner = "home-assistant-libs";
     repo = "python-matter-server";
     rev = "refs/tags/${version}";
-    hash = "sha256-bR6AVoy9f02RKZ57dnHTDAv5LTCcd/qBbzMDRKsGbfM=";
+    hash = "sha256-y4gapml7rIwOu1TVDEHPch7JS5Rl/cIfMLeVMIFzXOY=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/pyunifiprotect/default.nix b/pkgs/development/python-modules/pyunifiprotect/default.nix
index 5fcd6003dc844..929ea0dbaf228 100644
--- a/pkgs/development/python-modules/pyunifiprotect/default.nix
+++ b/pkgs/development/python-modules/pyunifiprotect/default.nix
@@ -32,7 +32,7 @@
 
 buildPythonPackage rec {
   pname = "pyunifiprotect";
-  version = "4.22.4";
+  version = "4.22.5";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -41,7 +41,7 @@ buildPythonPackage rec {
     owner = "briis";
     repo = "pyunifiprotect";
     rev = "refs/tags/v${version}";
-    hash = "sha256-xob7TmcI4hfxFmjspNfpdNEQBIJnyisykEcvr63s/d8=";
+    hash = "sha256-xfpEI5aI1WGaD63mTMzLlDqIxfCrXWLpIpO6tIlObxE=";
   };
 
   env.SETUPTOOLS_SCM_PRETEND_VERSION = version;
diff --git a/pkgs/development/python-modules/reolink-aio/default.nix b/pkgs/development/python-modules/reolink-aio/default.nix
index 77097cbe64d5b..e183d86786cc8 100644
--- a/pkgs/development/python-modules/reolink-aio/default.nix
+++ b/pkgs/development/python-modules/reolink-aio/default.nix
@@ -1,5 +1,6 @@
 { lib
 , aiohttp
+, aiortsp
 , buildPythonPackage
 , fetchFromGitHub
 , orjson
@@ -9,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "reolink-aio";
-  version = "0.8.4";
+  version = "0.8.5";
   format = "setuptools";
 
   disabled = pythonOlder "3.9";
@@ -18,11 +19,12 @@ buildPythonPackage rec {
     owner = "starkillerOG";
     repo = "reolink_aio";
     rev = "refs/tags/${version}";
-    hash = "sha256-wayaXNAZCo387laJRxiJai79CRJGgDlFYfSd603CAEA=";
+    hash = "sha256-zMn/poLD5cWZScYi6ku22I5vHIvVKJB5TTXXtwVrRGs=";
   };
 
   propagatedBuildInputs = [
     aiohttp
+    aiortsp
     orjson
     typing-extensions
   ];
diff --git a/pkgs/development/python-modules/roonapi/default.nix b/pkgs/development/python-modules/roonapi/default.nix
index 68346eb7cb3c4..7c8935a6def99 100644
--- a/pkgs/development/python-modules/roonapi/default.nix
+++ b/pkgs/development/python-modules/roonapi/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "roonapi";
-  version = "0.1.5";
+  version = "0.1.6";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "pavoni";
     repo = "pyroon";
     rev = version;
-    hash = "sha256-356eSRlO0kIaOm+O4bApraC0amEprBcCSvzl3LQ7k/E=";
+    hash = "sha256-6wQsaZ50J2xIPXzICglg5pf8U0r4tL8iqcbdwjZadwU=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/screenlogicpy/default.nix b/pkgs/development/python-modules/screenlogicpy/default.nix
index 73564d11e8f87..3d3f7d230261f 100644
--- a/pkgs/development/python-modules/screenlogicpy/default.nix
+++ b/pkgs/development/python-modules/screenlogicpy/default.nix
@@ -4,23 +4,28 @@
 , fetchFromGitHub
 , pythonOlder
 , pytest-asyncio
+, setuptools
 , pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "screenlogicpy";
-  version = "0.9.4";
-  format = "setuptools";
+  version = "0.10.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "dieselrabbit";
-    repo = pname;
+    repo = "screenlogicpy";
     rev = "refs/tags/v${version}";
-    hash = "sha256-OdAhA+vzIrUnE8Xdv52x7ij0LJKyxawaSY4QORP1TUg=";
+    hash = "sha256-pilPmHE5amCQ/mGTy3hJqtSEElx7SevQpeMJZKYv7BA=";
   };
 
+  nativeBuildInputs = [
+    setuptools
+  ];
+
   propagatedBuildInputs = [
     async-timeout
   ];
@@ -32,11 +37,12 @@ buildPythonPackage rec {
 
   disabledTests = [
     # Tests require network access
-    "test_gateway_discovery"
     "test_async_discovery"
-    "test_gateway"
     "test_async"
     "test_asyncio_gateway_discovery"
+    "test_discovery_async_discover"
+    "test_gateway_discovery"
+    "test_gateway"
   ];
 
   pythonImportsCheck = [
diff --git a/pkgs/development/python-modules/zigpy-deconz/default.nix b/pkgs/development/python-modules/zigpy-deconz/default.nix
index db40bada38244..ac6cf8901e04b 100644
--- a/pkgs/development/python-modules/zigpy-deconz/default.nix
+++ b/pkgs/development/python-modules/zigpy-deconz/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "zigpy-deconz";
-  version = "0.22.3";
+  version = "0.22.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "zigpy";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-AHAvp/Z3BDqyKEs7liwl+zU7mzAfI03bBnsU3Sfw2rU=";
+    hash = "sha256-MtF9k7Ogsv7gjeZSBvFLsh9LHUFy5z+qYleUI9BC2es=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/zwave-js-server-python/default.nix b/pkgs/development/python-modules/zwave-js-server-python/default.nix
index fbddedbe867ff..b987e5498941d 100644
--- a/pkgs/development/python-modules/zwave-js-server-python/default.nix
+++ b/pkgs/development/python-modules/zwave-js-server-python/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "zwave-js-server-python";
-  version = "0.54.0";
+  version = "0.55.2";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "home-assistant-libs";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-FdA8GHwe/An53CqPxE6QUwXTxk3HSqLBrk1dMaVWamA=";
+    hash = "sha256-yZlYsaN9j8WVtxWIXeH4Jqyo0xpDOC+2DCE8UA1c9h8=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix
index 74c2347ce7ede..3a1ca7a707b04 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 = "2023.12.4";
+  version = "2024.1.0";
   components = {
     "3_day_blinds" = ps: with ps; [
     ];
@@ -37,6 +37,10 @@
     "aemet" = ps: with ps; [
       aemet-opendata
     ];
+    "aep_ohio" = ps: with ps; [
+    ];
+    "aep_texas" = ps: with ps; [
+    ];
     "aftership" = ps: with ps; [
       pyaftership
     ];
@@ -66,6 +70,7 @@
       aioshelly
       airthings-ble
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -74,6 +79,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -176,17 +182,20 @@
     ];
     "anwb_energie" = ps: with ps; [
     ];
+    "aosmith" = ps: with ps; [
+    ]; # missing inputs: py-aosmith
     "apache_kafka" = ps: with ps; [
       aiokafka
     ];
     "apcupsd" = ps: with ps; [
-      apcaccess
-    ];
+    ]; # missing inputs: aioapcaccess
     "api" = ps: with ps; [
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
     ];
+    "appalachianpower" = ps: with ps; [
+    ];
     "apple_tv" = ps: with ps; [
       aiohttp-cors
       aiohttp-fast-url-dispatcher
@@ -227,6 +236,7 @@
       aioshelly
       aranet4
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -235,6 +245,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -405,6 +416,8 @@
     ]; # missing inputs: python-blockchain-api
     "bloomsky" = ps: with ps; [
     ];
+    "blue_current" = ps: with ps; [
+    ]; # missing inputs: bluecurrent-api
     "bluemaestro" = ps: with ps; [
       aioesphomeapi
       aiohttp-cors
@@ -413,6 +426,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluemaestro-ble
       bluetooth-adapters
@@ -422,6 +436,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -449,6 +464,7 @@
       bluetooth-data-tools
       dbus-fast
       fnv-hash-fast
+      habluetooth
       psutil-home-assistant
       pyserial
       pyudev
@@ -462,6 +478,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -470,6 +487,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -489,6 +507,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -497,6 +516,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -569,6 +589,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -578,6 +599,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -638,6 +660,8 @@
       webrtc-noise-gain
       zeroconf
     ];
+    "ccm15" = ps: with ps; [
+    ]; # missing inputs: py-ccm15
     "cert_expiry" = ps: with ps; [
     ];
     "channels" = ps: with ps; [
@@ -805,10 +829,12 @@
       bluetooth-adapters
       bluetooth-auto-recovery
       bluetooth-data-tools
+      cached-ipaddress
       dbus-fast
       fnv-hash-fast
       ha-av
       ha-ffmpeg
+      habluetooth
       hass-nabucasa
       hassil
       home-assistant-frontend
@@ -892,6 +918,7 @@
     ];
     "dhcp" = ps: with ps; [
       aiodiscover
+      cached-ipaddress
       scapy
     ];
     "diagnostics" = ps: with ps; [
@@ -982,6 +1009,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -990,6 +1018,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -1009,6 +1038,13 @@
     "dremel_3d_printer" = ps: with ps; [
       dremel3dpy
     ];
+    "drop_connect" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
+      janus
+      paho-mqtt
+    ]; # missing inputs: dropmqttapi
     "dsmr" = ps: with ps; [
       dsmr-parser
     ];
@@ -1213,6 +1249,7 @@
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -1221,6 +1258,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -1245,6 +1283,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -1254,6 +1293,7 @@
       eufylife-ble-client
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -1366,6 +1406,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -1375,6 +1416,7 @@
       fjaraskupan
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -1392,6 +1434,8 @@
     "flexit" = ps: with ps; [
       pymodbus
     ];
+    "flexit_bacnet" = ps: with ps; [
+    ]; # missing inputs: flexit_bacnet
     "flexom" = ps: with ps; [
     ];
     "flic" = ps: with ps; [
@@ -1501,6 +1545,8 @@
     "frontier_silicon" = ps: with ps; [
       afsapi
     ];
+    "fujitsu_anywair" = ps: with ps; [
+    ];
     "fully_kiosk" = ps: with ps; [
       aiohttp-cors
       aiohttp-fast-url-dispatcher
@@ -1525,6 +1571,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -1533,6 +1580,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -1710,6 +1758,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -1719,6 +1768,7 @@
       fnv-hash-fast
       govee-ble
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -1844,6 +1894,10 @@
     "hlk_sw16" = ps: with ps; [
       hlk-sw16
     ];
+    "holiday" = ps: with ps; [
+      babel
+      holidays
+    ];
     "home_connect" = ps: with ps; [
       aiohttp-cors
       aiohttp-fast-url-dispatcher
@@ -1975,6 +2029,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -1983,6 +2038,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -2072,6 +2128,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -2080,6 +2137,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ibeacon-ble
@@ -2103,6 +2161,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -2111,6 +2170,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -2169,6 +2229,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -2177,6 +2238,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -2191,6 +2253,8 @@
     "incomfort" = ps: with ps; [
       incomfort-client
     ];
+    "indianamichiganpower" = ps: with ps; [
+    ];
     "influxdb" = ps: with ps; [
       influxdb
       influxdb-client
@@ -2203,6 +2267,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -2211,6 +2276,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -2351,6 +2417,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -2359,6 +2426,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -2371,6 +2439,8 @@
       webrtc-noise-gain
       zeroconf
     ];
+    "kentuckypower" = ps: with ps; [
+    ];
     "keyboard" = ps: with ps; [
     ]; # missing inputs: pyuserinput
     "keyboard_remote" = ps: with ps; [
@@ -2385,6 +2455,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -2393,6 +2464,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -2507,6 +2579,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -2515,6 +2588,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -2535,6 +2609,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -2543,6 +2618,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -2782,6 +2858,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -2790,6 +2867,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -2833,6 +2911,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -2841,6 +2920,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -2927,6 +3007,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -2935,6 +3016,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -3002,6 +3084,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -3010,6 +3093,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -3038,6 +3122,8 @@
       aiohttp-zlib-ng
       motioneye-client
     ];
+    "motionmount" = ps: with ps; [
+    ]; # missing inputs: python-MotionMount
     "mpd" = ps: with ps; [
       mpd2
     ];
@@ -3412,6 +3498,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -3420,6 +3507,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -3439,6 +3527,8 @@
     "orvibo" = ps: with ps; [
       orvibo
     ];
+    "osoenergy" = ps: with ps; [
+    ]; # missing inputs: pyosoenergyapi
     "osramlightify" = ps: with ps; [
     ]; # missing inputs: lightify
     "otbr" = ps: with ps; [
@@ -3640,6 +3730,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -3648,6 +3739,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -3694,6 +3786,8 @@
     ]; # missing inputs: pyps4-2ndscreen
     "pse" = ps: with ps; [
     ];
+    "psoklahoma" = ps: with ps; [
+    ];
     "pulseaudio_loopback" = ps: with ps; [
       pulsectl
     ];
@@ -3737,6 +3831,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -3745,6 +3840,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -3830,6 +3926,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -3838,6 +3935,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -3895,6 +3993,8 @@
     "reddit" = ps: with ps; [
       praw
     ];
+    "refoss" = ps: with ps; [
+    ]; # missing inputs: refoss-ha
     "rejseplanen" = ps: with ps; [
       rjpl
     ];
@@ -4022,6 +4122,7 @@
       bluetooth-data-tools
       dbus-fast
       fnv-hash-fast
+      habluetooth
       psutil-home-assistant
       pyserial
       pyudev
@@ -4035,6 +4136,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -4043,6 +4145,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -4092,6 +4195,8 @@
     ];
     "schluter" = ps: with ps; [
     ]; # missing inputs: py-schluter
+    "scl" = ps: with ps; [
+    ];
     "scrape" = ps: with ps; [
       beautifulsoup4
       jsonpath
@@ -4137,6 +4242,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -4145,6 +4251,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -4172,6 +4279,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -4180,6 +4288,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -4200,6 +4309,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -4208,6 +4318,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -4266,6 +4377,7 @@
       bluetooth-data-tools
       dbus-fast
       fnv-hash-fast
+      habluetooth
       psutil-home-assistant
       pyserial
       pyudev
@@ -4393,8 +4505,7 @@
       paho-mqtt
     ];
     "snmp" = ps: with ps; [
-      pysnmplib
-    ];
+    ]; # missing inputs: pysnmp-lextudio
     "snooz" = ps: with ps; [
       aioesphomeapi
       aiohttp-cors
@@ -4403,6 +4514,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -4411,6 +4523,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -4499,6 +4612,7 @@
     ];
     "sql" = ps: with ps; [
       sqlalchemy
+      sqlparse
     ];
     "squeezebox" = ps: with ps; [
       pysqueezebox
@@ -4581,6 +4695,9 @@
     ];
     "sun" = ps: with ps; [
     ];
+    "sunweg" = ps: with ps; [
+      sunweg
+    ];
     "supervisord" = ps: with ps; [
     ];
     "supla" = ps: with ps; [
@@ -4588,6 +4705,8 @@
     "surepetcare" = ps: with ps; [
       surepy
     ];
+    "swepco" = ps: with ps; [
+    ];
     "swiss_hydrological_data" = ps: with ps; [
       swisshydrodata
     ];
@@ -4611,6 +4730,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -4619,6 +4739,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -4687,6 +4808,9 @@
     "tailscale" = ps: with ps; [
       tailscale
     ];
+    "tailwind" = ps: with ps; [
+      gotailwind
+    ];
     "tami4" = ps: with ps; [
     ]; # missing inputs: Tami4EdgeAPI
     "tank_utility" = ps: with ps; [
@@ -4748,6 +4872,8 @@
     "tesla_wall_connector" = ps: with ps; [
       tesla-wall-connector
     ];
+    "tessie" = ps: with ps; [
+    ]; # missing inputs: tessie-api
     "text" = ps: with ps; [
     ];
     "tfiac" = ps: with ps; [
@@ -4760,6 +4886,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -4768,6 +4895,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -4790,6 +4918,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -4798,6 +4927,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -4854,6 +4984,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -4862,6 +4993,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -5047,8 +5179,7 @@
       aiounifi
     ];
     "unifi_direct" = ps: with ps; [
-      pexpect
-    ];
+    ]; # missing inputs: unifi_ap
     "unifiled" = ps: with ps; [
       unifiled
     ];
@@ -5118,6 +5249,8 @@
     "vallox" = ps: with ps; [
       vallox-websocket-api
     ];
+    "valve" = ps: with ps; [
+    ];
     "vasttrafik" = ps: with ps; [
     ]; # missing inputs: vtjp
     "velbus" = ps: with ps; [
@@ -5358,6 +5491,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -5366,6 +5500,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -5405,6 +5540,7 @@
       aioruuvigateway
       aioshelly
       bleak
+      bleak-esphome
       bleak-retry-connector
       bluetooth-adapters
       bluetooth-auto-recovery
@@ -5413,6 +5549,7 @@
       esphome-dashboard-api
       fnv-hash-fast
       ha-ffmpeg
+      habluetooth
       hassil
       home-assistant-intents
       ifaddr
@@ -5607,7 +5744,6 @@
     "anova"
     "anthemav"
     "apache_kafka"
-    "apcupsd"
     "api"
     "apple_tv"
     "application_credentials"
@@ -5760,6 +5896,7 @@
     "file_upload"
     "filesize"
     "filter"
+    "fints"
     "fireservicerota"
     "firmata"
     "fitbit"
@@ -5839,6 +5976,7 @@
     "history_stats"
     "hive"
     "hlk_sw16"
+    "holiday"
     "home_connect"
     "home_plus_control"
     "homeassistant"
@@ -6001,6 +6139,7 @@
     "nest"
     "netatmo"
     "netgear"
+    "netgear_lte"
     "network"
     "nexia"
     "nextbus"
@@ -6118,6 +6257,7 @@
     "risco"
     "rituals_perfume_genie"
     "rmvtransport"
+    "roborock"
     "roku"
     "roomba"
     "roon"
@@ -6173,7 +6313,6 @@
     "smtp"
     "snapcast"
     "snips"
-    "snmp"
     "snooz"
     "solaredge"
     "solarlog"
@@ -6201,10 +6340,14 @@
     "steamist"
     "stookalert"
     "stream"
+    "streamlabswater"
     "stt"
     "subaru"
+    "suez_water"
     "sun"
+    "sunweg"
     "surepetcare"
+    "swiss_public_transport"
     "switch"
     "switch_as_x"
     "switchbee"
@@ -6215,9 +6358,11 @@
     "synology_dsm"
     "system_health"
     "system_log"
+    "systemmonitor"
     "tado"
     "tag"
     "tailscale"
+    "tailwind"
     "tankerkoenig"
     "tasmota"
     "tautulli"
@@ -6268,7 +6413,6 @@
     "uk_transport"
     "ukraine_alarm"
     "unifi"
-    "unifi_direct"
     "unifiprotect"
     "universal"
     "upb"
@@ -6284,6 +6428,7 @@
     "v2c"
     "vacuum"
     "vallox"
+    "valve"
     "velbus"
     "venstar"
     "vera"
diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix
index 6b492197d7aba..e10dfba0ea06d 100644
--- a/pkgs/servers/home-assistant/default.nix
+++ b/pkgs/servers/home-assistant/default.nix
@@ -30,26 +30,6 @@ let
     # Override the version of some packages pinned in Home Assistant's setup.py and requirements_all.txt
 
     (self: super: {
-      aioairq = super.aioairq.overridePythonAttrs (oldAttrs: rec {
-        version = "0.3.1";
-        src = fetchFromGitHub {
-          owner = "CorantGmbH";
-          repo = "aioairq";
-          rev = "refs/tags/v${version}";
-          hash = "sha256-SRsDSHTZkkygaQZjHENKNLx3ZWMi/PubS1m/MonEKNk=";
-        };
-      });
-
-      aioesphomeapi = super.aioesphomeapi.overridePythonAttrs (oldAttrs: rec {
-        version = "19.2.1";
-        src = fetchFromGitHub {
-          owner = "esphome";
-          repo = "aioesphomeapi";
-          rev = "refs/tags/v${version}";
-          hash = "sha256-WSWGO0kI1m6oaImUYZ6m5WKJ+xPs/rtn5wVq1bDr+bE=";
-        };
-      });
-
       # https://github.com/home-assistant/core/pull/101913
       aiohttp = super.aiohttp.overridePythonAttrs (old: rec {
         version = "3.9.1";
@@ -62,13 +42,13 @@ let
         doCheck = false;
       });
 
-      aiohttp-zlib-ng = super.aiohttp-zlib-ng.overridePythonAttrs (oldAttrs: rec {
-        version = "0.1.1";
+      aioskybell = super.aioskybell.overridePythonAttrs (oldAttrs: rec {
+        version = "22.7.0";
         src = fetchFromGitHub {
-          owner = "bdraco";
-          repo = "aiohttp-zlib-ng";
-          rev = "refs/tags/v${version}";
-          hash = "sha256-dTNwt4eX6ZQ8ySK2/9ziVbc3KFg2aL/EsiBWaJRC4x8=";
+          owner = "tkdrob";
+          repo = "aioskybell";
+          rev = "refs/tags/${version}";
+          hash = "sha256-aBT1fDFtq1vasTvCnAXKV2vmZ6LBLZqRCiepv1HDJ+Q=";
         };
       });
 
@@ -188,32 +168,6 @@ let
         doCheck = false; # no tests
       });
 
-      openai = super.openai.overridePythonAttrs (oldAttrs: rec {
-        version = "0.28.1";
-        src = fetchFromGitHub {
-          owner = "openai";
-          repo = "openai-python";
-          rev = "refs/tags/v${version}";
-          hash = "sha256-liJyeGxnYIC/jUQKdeATHpVJb/12KGbeM94Y2YQphfY=";
-        };
-        nativeBuildInputs = with self; [
-          setuptools
-        ];
-        propagatedBuildInputs = with self; [
-          aiohttp
-          requests
-          tqdm
-        ];
-        disabledTestPaths = [
-          # Requires a real API key
-          "openai/tests/test_endpoints.py"
-          "openai/tests/asyncio/test_endpoints.py"
-          # openai: command not found
-          "openai/tests/test_file_cli.py"
-          "openai/tests/test_long_examples_validator.py"
-        ];
-      });
-
       # Pinned due to API changes in 1.3.0
       ovoenergy = super.ovoenergy.overridePythonAttrs (oldAttrs: rec {
         version = "1.2.0";
@@ -235,15 +189,6 @@ let
         };
       });
 
-      psutil = super.psutil.overridePythonAttrs (oldAttrs: rec {
-        version = "5.9.6";
-        src = fetchPypi {
-          pname = "psutil";
-          inherit version;
-          hash = "sha256-5Lkt3NfdTN0/kAGA6h4QSTLHvOI0+4iXbio7KWRBIlo=";
-        };
-      });
-
       py-synologydsm-api = super.py-synologydsm-api.overridePythonAttrs (oldAttrs: rec {
         version = "2.1.4";
         src = fetchFromGitHub {
@@ -322,16 +267,6 @@ let
         };
       });
 
-      python-tado = super.python-tado.overridePythonAttrs (oldAttrs: rec {
-        version = "0.15.0";
-        src = fetchFromGitHub {
-          owner = "wmalgadey";
-          repo = "PyTado";
-          rev = "refs/tags/${version}";
-          hash = "sha256-gduqQVw/a64aDzTHFmgZu7OVB53jZb7L5vofzL3Ho6s=";
-        };
-      });
-
       pytradfri = super.pytradfri.overridePythonAttrs (oldAttrs: rec {
         version = "9.0.1";
         src = fetchFromGitHub {
@@ -377,7 +312,7 @@ let
   extraBuildInputs = extraPackages python.pkgs;
 
   # Don't forget to run parse-requirements.py after updating
-  hassVersion = "2023.12.4";
+  hassVersion = "2024.1.0";
 
 in python.pkgs.buildPythonApplication rec {
   pname = "homeassistant";
@@ -395,13 +330,13 @@ in python.pkgs.buildPythonApplication rec {
     owner = "home-assistant";
     repo = "core";
     rev = "refs/tags/${version}";
-    hash = "sha256-XzjsSM0xKxLeuP30u8LReJtmJMbJq+yQ2Pp5xWmNLFw=";
+    hash = "sha256-aNSyBr4QEK4pmYnRGW1LNuCSU5EpZtLEGQUtYL+CvUg=";
   };
 
   # Secondary source is pypi sdist for translations
   sdist = fetchPypi {
     inherit pname version;
-    hash = "sha256-dea0PacCzCWhMh2gw/kVJHwYCoT7zJ52qTQbHmqcwU8=";
+    hash = "sha256-szlvSfkcPG6DGGHZ5iNtz0EBa8DVYaoGZWSlc7AEG1I=";
   };
 
   nativeBuildInputs = with python.pkgs; [
diff --git a/pkgs/servers/home-assistant/frontend.nix b/pkgs/servers/home-assistant/frontend.nix
index 367db0bad9006..3e7f58c421161 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 = "20231208.2";
+  version = "20240103.3";
   format = "wheel";
 
   src = fetchPypi {
@@ -12,7 +12,7 @@ buildPythonPackage rec {
     pname = "home_assistant_frontend";
     dist = "py3";
     python = "py3";
-    hash = "sha256-JTYZPku5UdnMOllnzyI9tbYgxcewx5tklDooQKJA6p8=";
+    hash = "sha256-xCYAGig8sKZHa2Ix+XhR33xcKPucwvQFikuYjXpqzNM=";
   };
 
   # 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 e88520bb883b4..8e5921ceb2ff6 100644
--- a/pkgs/servers/home-assistant/intents.nix
+++ b/pkgs/servers/home-assistant/intents.nix
@@ -20,7 +20,7 @@
 
 buildPythonPackage rec {
   pname = "home-assistant-intents";
-  version = "2023.12.05";
+  version = "2024.1.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.9";
@@ -29,7 +29,7 @@ buildPythonPackage rec {
     owner = "home-assistant";
     repo = "intents-package";
     rev = "refs/tags/${version}";
-    hash = "sha256-BVcvlmX5+w7b9uNHA4ZP6Ebj+7ROUgEaAmXAGQrby+s=";
+    hash = "sha256-uOrSvkzymG31nRmAgrn6z1IDJWahxqXHcPDflLPRVT4=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/servers/home-assistant/parse-requirements.py b/pkgs/servers/home-assistant/parse-requirements.py
index bb5e70994320b..436d1105b10de 100755
--- a/pkgs/servers/home-assistant/parse-requirements.py
+++ b/pkgs/servers/home-assistant/parse-requirements.py
@@ -41,6 +41,7 @@ PKG_SET = "home-assistant.python.pkgs"
 PKG_PREFERENCES = {
     "fiblary3": "fiblary3-fork",  # https://github.com/home-assistant/core/issues/66466
     "HAP-python": "hap-python",
+    "SQLAlchemy": "sqlalchemy",
     "tensorflow": "tensorflow",
     "yt-dlp": "yt-dlp",
 }
diff --git a/pkgs/servers/home-assistant/tests.nix b/pkgs/servers/home-assistant/tests.nix
index 63cd9558a69dc..15f1cd6f29040 100644
--- a/pkgs/servers/home-assistant/tests.nix
+++ b/pkgs/servers/home-assistant/tests.nix
@@ -64,6 +64,10 @@ let
     conversation = [
       "--deselect tests/components/conversation/test_init.py::test_get_agent_list"
     ];
+    cloud = [
+      # Tries to connect to alexa-api.nabucasa.com:443
+      "--deselect tests/components/cloud/test_http_api.py::test_websocket_update_preferences_alexa_report_state"
+    ];
     dnsip = [
       # Tries to resolve DNS entries
       "--deselect tests/components/dnsip/test_config_flow.py::test_options_flow"
@@ -134,6 +138,8 @@ in lib.listToAttrs (map (component: lib.nameValuePair component (
       broken = lib.elem component [
         # pinned version incompatible with urllib3>=2.0
         "telegram_bot"
+        # depends on telegram_bot
+        "telegram"
       ];
       # upstream only tests on Linux, so do we.
       platforms = lib.platforms.linux;
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 19be45b303a27..d1136c0256561 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -362,6 +362,8 @@ self: super: with self; {
 
   aiortm = callPackage ../development/python-modules/aiortm { };
 
+  aiortsp = callPackage ../development/python-modules/aiortsp { };
+
   aioruckus = callPackage ../development/python-modules/aioruckus { };
 
   aiorun = callPackage ../development/python-modules/aiorun { };