about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/applications/audio/curseradio/default.nix36
-rw-r--r--pkgs/applications/audio/curseradio/mpv.patch11
-rw-r--r--pkgs/applications/editors/vscode/default.nix8
-rw-r--r--pkgs/applications/graphics/wings/default.nix4
-rw-r--r--pkgs/applications/misc/gramps/default.nix4
-rw-r--r--pkgs/applications/misc/workrave/default.nix4
-rw-r--r--pkgs/applications/networking/browsers/chromium/upstream-info.nix18
-rw-r--r--pkgs/applications/version-management/git-and-tools/subgit/default.nix4
-rw-r--r--pkgs/applications/video/xawtv/default.nix4
-rw-r--r--pkgs/development/compilers/gcc-arm-embedded/6/default.nix19
-rw-r--r--pkgs/development/compilers/gcc-arm-embedded/7/default.nix15
-rw-r--r--pkgs/development/compilers/gcc-arm-embedded/8/default.nix15
-rw-r--r--pkgs/development/libraries/physics/herwig/default.nix6
-rw-r--r--pkgs/development/libraries/physics/thepeg/default.nix4
-rw-r--r--pkgs/development/libraries/wolfssl/default.nix4
-rw-r--r--pkgs/development/python-modules/aioesphomeapi/default.nix12
-rw-r--r--pkgs/development/python-modules/cmd2/default.nix4
-rw-r--r--pkgs/development/python-modules/ldap/default.nix10
-rw-r--r--pkgs/development/python-modules/ldappool/default.nix9
-rw-r--r--pkgs/development/python-modules/netdisco/default.nix4
-rw-r--r--pkgs/misc/vscode-extensions/default.nix4
-rw-r--r--pkgs/servers/home-assistant/appdaemon.nix8
-rw-r--r--pkgs/servers/home-assistant/component-packages.nix1719
-rw-r--r--pkgs/servers/home-assistant/default.nix10
-rw-r--r--pkgs/servers/home-assistant/frontend.nix4
-rw-r--r--pkgs/tools/misc/tlp/default.nix48
-rw-r--r--pkgs/tools/misc/vdirsyncer/default.nix10
-rw-r--r--pkgs/tools/networking/dnscrypt-proxy/2.x/default.nix6
-rw-r--r--pkgs/tools/system/rsyslog/default.nix4
-rw-r--r--pkgs/top-level/all-packages.nix2
-rw-r--r--pkgs/top-level/dotnet-packages.nix7
31 files changed, 1315 insertions, 702 deletions
diff --git a/pkgs/applications/audio/curseradio/default.nix b/pkgs/applications/audio/curseradio/default.nix
new file mode 100644
index 000000000000..1dd5f9ee5eb2
--- /dev/null
+++ b/pkgs/applications/audio/curseradio/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, substituteAll, python3Packages, mpv }:
+
+python3Packages.buildPythonApplication rec {
+  version = "0.2";
+  pname = "curseradio";
+
+  src = fetchFromGitHub {
+    owner = "chronitis";
+    repo = pname;
+    rev = "1bd4bd0faeec675e0647bac9a100b526cba19f8d";
+    sha256 = "11bf0jnj8h2fxhpdp498189r4s6b47vy4wripv0z4nx7lxajl88i";
+  };
+
+  propagatedBuildInputs = with python3Packages; [
+    requests
+    lxml
+    pyxdg
+  ];
+
+  patches = [
+    (substituteAll {
+      src = ./mpv.patch;
+      inherit mpv;
+    })
+  ];
+
+  # No tests
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Command line radio player";
+    homepage = "https://github.com/chronitis/curseradio";
+    license = licenses.mit;
+    maintainers = [ maintainers.eyjhb ];
+  };
+}
diff --git a/pkgs/applications/audio/curseradio/mpv.patch b/pkgs/applications/audio/curseradio/mpv.patch
new file mode 100644
index 000000000000..d085dc791099
--- /dev/null
+++ b/pkgs/applications/audio/curseradio/mpv.patch
@@ -0,0 +1,11 @@
+--- a/curseradio/curseradio.py
++++ b/curseradio/curseradio.py
+@@ -30,7 +30,7 @@ import re
+ 
+ CONFIG_DEFAULT = {
+     'opml': {'root': "http://opml.radiotime.com/"},
+-    'playback': {'command': '/usr/bin/mpv'},
++    'playback': {'command': '@mpv@/bin/mpv'},
+     'interface': {'keymap': 'default'},
+     'keymap.default': {
+         'up': 'KEY_UP',
diff --git a/pkgs/applications/editors/vscode/default.nix b/pkgs/applications/editors/vscode/default.nix
index 07333a4b8032..ace5bd968cee 100644
--- a/pkgs/applications/editors/vscode/default.nix
+++ b/pkgs/applications/editors/vscode/default.nix
@@ -18,16 +18,16 @@ let
   }.${system};
 
   sha256 = {
-    "i686-linux" = "1qll0hyqyn3vb0v35h9y8rk4l3r6zzc5bkra6pb23bnr4bna4y80";
-    "x86_64-linux" = "1sfvv4g7kmvabqxasil41gasr7hsmgf8wwc4dl1940pb7x19fllq";
-    "x86_64-darwin" = "0gjdppr59pyb2wawvf7yyk7357a5naxga74zf9gc7d9s1fz78hls";
+    "i686-linux" = "0yfnsmixw3kh7lhb8npqhyihy146a31c1k90smn4kqvmlvm06jir";
+    "x86_64-linux" = "002bbwj4hxr58lbhjc05s3l9aw37ak06kp98hs8fpmznjsa5x14y";
+    "x86_64-darwin" = "1f9hkydlyjh2z5d99pwpsqg9yf05pgi5y0mbprgbxacayqcrq2nr";
   }.${system};
 
   archive_fmt = if system == "x86_64-darwin" then "zip" else "tar.gz";
 in
   stdenv.mkDerivation rec {
     name = "vscode-${version}";
-    version = "1.32.3";
+    version = "1.33.0";
 
     src = fetchurl {
       name = "VSCode_${version}_${plat}.${archive_fmt}";
diff --git a/pkgs/applications/graphics/wings/default.nix b/pkgs/applications/graphics/wings/default.nix
index 891f3586fa59..0a4e9ada0787 100644
--- a/pkgs/applications/graphics/wings/default.nix
+++ b/pkgs/applications/graphics/wings/default.nix
@@ -1,10 +1,10 @@
 { fetchurl, stdenv, erlang, cl, libGL, libGLU, runtimeShell }:
 
 stdenv.mkDerivation rec {
-  name = "wings-2.2.1";
+  name = "wings-2.2.3";
   src = fetchurl {
     url = "mirror://sourceforge/wings/${name}.tar.bz2";
-    sha256 = "1adlq3wd9bz0hjznpzsgilxgsbhr0kk01f06872mq37v4cbw76bh";
+    sha256 = "1b9xdmh0186xxs92i831vm9yq0il1hngi8bl9a1q7fs26wb8js1g";
   };
 
   ERL_LIBS = "${cl}/lib/erlang/lib";
diff --git a/pkgs/applications/misc/gramps/default.nix b/pkgs/applications/misc/gramps/default.nix
index db18ff73412c..e9026ded4702 100644
--- a/pkgs/applications/misc/gramps/default.nix
+++ b/pkgs/applications/misc/gramps/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchFromGitHub, gtk3, pythonPackages, intltool, gnome3,
-  pango, gobject-introspection, wrapGAppsHook,
+  pango, gobject-introspection, wrapGAppsHook, gettext,
 # Optional packages:
  enableOSM ? true, osm-gps-map,
  enableGraphviz ? true, graphviz,
@@ -12,7 +12,7 @@ in buildPythonApplication rec {
   version = "5.0.1";
   name = "gramps-${version}";
 
-  nativeBuildInputs = [ wrapGAppsHook ];
+  nativeBuildInputs = [ wrapGAppsHook gettext ];
   buildInputs = [ intltool gtk3 gobject-introspection pango gnome3.gexiv2 ] 
     # Map support
     ++ stdenv.lib.optional enableOSM osm-gps-map
diff --git a/pkgs/applications/misc/workrave/default.nix b/pkgs/applications/misc/workrave/default.nix
index 7e54f943856a..1547d2962116 100644
--- a/pkgs/applications/misc/workrave/default.nix
+++ b/pkgs/applications/misc/workrave/default.nix
@@ -7,11 +7,11 @@
 
 stdenv.mkDerivation rec {
   name = "workrave-${version}";
-  version = "1.10.23";
+  version = "1.10.31";
 
   src = let
   in fetchFromGitHub {
-    sha256 = "1qhlwfhwk5agv4904d6bsf83k9k89q7bms6agg967vsca4905vcw";
+    sha256 = "0v2mx2idaxlsyv5w66b7pknlill9j9i2gqcs3vq54gak7ix9fj1p";
     rev = with stdenv.lib;
       "v" + concatStringsSep "_" (splitString "." version);
     repo = "workrave";
diff --git a/pkgs/applications/networking/browsers/chromium/upstream-info.nix b/pkgs/applications/networking/browsers/chromium/upstream-info.nix
index b4da79a49838..de83e0e0646c 100644
--- a/pkgs/applications/networking/browsers/chromium/upstream-info.nix
+++ b/pkgs/applications/networking/browsers/chromium/upstream-info.nix
@@ -1,18 +1,18 @@
 # This file is autogenerated from update.sh in the same directory.
 {
   beta = {
-    sha256 = "18xzddqi8rgng5vksx23jaiv103prxc38pshwp702nfjfqap7fwy";
-    sha256bin64 = "1r9nnc1xn319aqzxjh10n6nh714lghgskgdkpvw3hnvgb0v9jw4v";
-    version = "73.0.3683.86";
+    sha256 = "1lpgkf292f6v6v19zjp1si6vvizixk9192yjx76pq1d790678qrb";
+    sha256bin64 = "028c3gjh5zbxr53wkk3s5jvgwc2fz9cnvnyr58q4la91vyrbjslm";
+    version = "74.0.3729.61";
   };
   dev = {
-    sha256 = "0vdiaraw3jjr7ykdqbrhjzppvqs9d7jkkx1qyi50dyvrhipxdihz";
-    sha256bin64 = "0c5mnb1zz1mjs7h18f1c15ygqxl1kcpm2s1imyprh80mapmsxdxk";
-    version = "74.0.3729.22";
+    sha256 = "15197r2gbx4h7dsasvgz0vcl7mqmj0glc4sip99dw145drwdpmsq";
+    sha256bin64 = "1qf089l5k7l69msrn49z5lkg932n1rgnzgr9yg5ja89arcgynacv";
+    version = "75.0.3753.4";
   };
   stable = {
-    sha256 = "18xzddqi8rgng5vksx23jaiv103prxc38pshwp702nfjfqap7fwy";
-    sha256bin64 = "1mmm4lxvcfvdj6jpqaas51lx1c9zky4zp374phs3cmh9v8l2ijkb";
-    version = "73.0.3683.86";
+    sha256 = "1bskjr7yiwvdab1b5mp36y6964xqpgks6dqazm4qifwqvqcw80pb";
+    sha256bin64 = "00ndrqhmnk567sw6xj22m84126qvivq0jzfx0v46ya3kq6ln22gr";
+    version = "73.0.3683.103";
   };
 }
diff --git a/pkgs/applications/version-management/git-and-tools/subgit/default.nix b/pkgs/applications/version-management/git-and-tools/subgit/default.nix
index 7b36a142d15d..a129e0f75272 100644
--- a/pkgs/applications/version-management/git-and-tools/subgit/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/subgit/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchurl, unzip, makeWrapper, jre }:
 
 stdenv.mkDerivation rec {
-  name = "subgit-3.2.4";
+  name = "subgit-3.3.6";
 
   meta = {
     description = "A tool for a smooth, stress-free SVN to Git migration";
@@ -21,6 +21,6 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "http://subgit.com/download/${name}.zip";
-    sha256 = "13r6hi2zk46bs3j17anfc85kszlwliv2yc16qx834b3v4w68hajw";
+    sha256 = "1zfhl583lx7xdw9jwskv25p6m385wm3s5a311y0hnxxqwkjbgq1j";
   };
 }
diff --git a/pkgs/applications/video/xawtv/default.nix b/pkgs/applications/video/xawtv/default.nix
index f6f8016ec1d3..db9a5ce7850b 100644
--- a/pkgs/applications/video/xawtv/default.nix
+++ b/pkgs/applications/video/xawtv/default.nix
@@ -2,10 +2,10 @@
 , libFS, libXaw, libXpm, libXext, libSM, libICE, perl, linux}:
 
 stdenv.mkDerivation rec {
-  name = "xawtv-3.105";
+  name = "xawtv-3.106";
   src = fetchurl {
     url = "https://linuxtv.org/downloads/xawtv/${name}.tar.bz2";
-    sha256 = "03v4k0dychjz1kj890d9pc7v8jh084m01g71x1clmmvc6vc9kn1b";
+    sha256 = "174wd36rk0k23mgx9nlnpc398yd1f0wiv060963axg6sz0v4rksp";
   };
 
   preConfigure = ''
diff --git a/pkgs/development/compilers/gcc-arm-embedded/6/default.nix b/pkgs/development/compilers/gcc-arm-embedded/6/default.nix
index 82edf0e33cfa..9e5a172eed84 100644
--- a/pkgs/development/compilers/gcc-arm-embedded/6/default.nix
+++ b/pkgs/development/compilers/gcc-arm-embedded/6/default.nix
@@ -5,16 +5,17 @@ stdenv.mkDerivation rec {
   version = "6-2017-q2-update";
   subdir = "6-2017q2";
 
-  platformString =
-    if stdenv.isLinux then "linux"
-    else if stdenv.isDarwin then "mac"
-    else throw "unsupported platform";
-
-  urlString = "https://developer.arm.com/-/media/Files/downloads/gnu-rm/${subdir}/gcc-arm-none-eabi-${version}-${platformString}.tar.bz2";
-
   src =
-    if stdenv.isLinux then fetchurl { url=urlString; sha256="1hvwi02mx34al525sngnl0cm7dkmzxfkb1brq9kvbv28wcplp3p6"; }
-    else if stdenv.isDarwin then fetchurl { url=urlString; sha256="0019ylpq4inq7p5gydpmc9m8ni72fz2csrjlqmgx1698998q0c3x"; }
+    if stdenv.isLinux then
+      fetchurl {
+        url = "https://developer.arm.com/-/media/Files/downloads/gnu-rm/${subdir}/gcc-arm-none-eabi-${version}-linux.tar.bz2";
+        sha256="1hvwi02mx34al525sngnl0cm7dkmzxfkb1brq9kvbv28wcplp3p6";
+      }
+    else if stdenv.isDarwin then
+      fetchurl {
+        url = "https://developer.arm.com/-/media/Files/downloads/gnu-rm/${subdir}/gcc-arm-none-eabi-${version}-mac.tar.bz2";
+        sha256="0019ylpq4inq7p5gydpmc9m8ni72fz2csrjlqmgx1698998q0c3x";
+      }
     else throw "unsupported platform";
 
   phases = [ "unpackPhase" "installPhase" "fixupPhase" ];
diff --git a/pkgs/development/compilers/gcc-arm-embedded/7/default.nix b/pkgs/development/compilers/gcc-arm-embedded/7/default.nix
index 39fc3c517f81..80e042b5c2e9 100644
--- a/pkgs/development/compilers/gcc-arm-embedded/7/default.nix
+++ b/pkgs/development/compilers/gcc-arm-embedded/7/default.nix
@@ -7,9 +7,18 @@ stdenv.mkDerivation rec {
   version = "7-2018-q2-update";
   subdir = "7-2018q2";
 
-  urlString = "https://developer.arm.com/-/media/Files/downloads/gnu-rm/${subdir}/gcc-arm-none-eabi-${version}-linux.tar.bz2";
-
-  src = fetchurl { url=urlString; sha256="0sgysp3hfpgrkcbfiwkp0a7ymqs02khfbrjabm52b5z61sgi05xv"; };
+  src =
+  if stdenv.isLinux then
+    fetchurl {
+      url = "https://developer.arm.com/-/media/Files/downloads/gnu-rm/${subdir}/gcc-arm-none-eabi-${version}-linux.tar.bz2";
+      sha256="0sgysp3hfpgrkcbfiwkp0a7ymqs02khfbrjabm52b5z61sgi05xv";
+    }
+  else if stdenv.isDarwin then
+    fetchurl {
+      url = "https://developer.arm.com/-/media/Files/downloads/gnu-rm/${subdir}/gcc-arm-none-eabi-${version}-mac.tar.bz2";
+      sha256="0nc7m0mpa39qyhfyydxkkyqm7spfc27xf6ygi2vd2aym4r9azi61";
+    }
+  else throw "unsupported platform";
 
   phases = [ "unpackPhase" "installPhase" "fixupPhase" ];
 
diff --git a/pkgs/development/compilers/gcc-arm-embedded/8/default.nix b/pkgs/development/compilers/gcc-arm-embedded/8/default.nix
index a26131cb0536..ee57dcc8c144 100644
--- a/pkgs/development/compilers/gcc-arm-embedded/8/default.nix
+++ b/pkgs/development/compilers/gcc-arm-embedded/8/default.nix
@@ -7,9 +7,18 @@ stdenv.mkDerivation rec {
   version = "8-2018-q4-major";
   subdir = "8-2018q4";
 
-  urlString = "https://developer.arm.com/-/media/Files/downloads/gnu-rm/${subdir}/gcc-arm-none-eabi-${version}-linux.tar.bz2";
-
-  src = fetchurl { url=urlString; sha256="fb31fbdfe08406ece43eef5df623c0b2deb8b53e405e2c878300f7a1f303ee52"; };
+  src =
+  if stdenv.isLinux then
+    fetchurl {
+      url = "https://developer.arm.com/-/media/Files/downloads/gnu-rm/${subdir}/gcc-arm-none-eabi-${version}-linux.tar.bz2";
+      sha256="fb31fbdfe08406ece43eef5df623c0b2deb8b53e405e2c878300f7a1f303ee52";
+    }
+  else if stdenv.isDarwin then
+    fetchurl {
+      url = "https://developer.arm.com/-/media/Files/downloads/gnu-rm/${subdir}/gcc-arm-none-eabi-${version}-mac.tar.bz2";
+      sha256="0q44r57fizpk1z3ngcjwal3rxgsnzjyfknpgwlwzmw5r9p98wlhb";
+    }
+  else throw "unsupported platform";
 
   phases = [ "unpackPhase" "installPhase" "fixupPhase" ];
 
diff --git a/pkgs/development/libraries/physics/herwig/default.nix b/pkgs/development/libraries/physics/herwig/default.nix
index 722dccaea7be..7a146bb7309a 100644
--- a/pkgs/development/libraries/physics/herwig/default.nix
+++ b/pkgs/development/libraries/physics/herwig/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "herwig-${version}";
-  version = "7.1.4";
+  version = "7.1.5";
 
   src = fetchurl {
     url = "https://www.hepforge.org/archive/herwig/Herwig-${version}.tar.bz2";
-    sha256 = "1awr1jz0q873x8bgwiilzklhk1zkgm6slvpychpnvsf9vk05mmdx";
+    sha256 = "0jnrv59zfa41gc37pqr3vaiz5jkh7w0k0alcax37b3mlbsnacr9r";
   };
 
   nativeBuildInputs = [ autoconf automake libtool ];
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
     ++ (with lhapdf.pdf_sets; [ MMHT2014lo68cl MMHT2014nlo68cl ]);
 
   postPatch = ''
-    patchShebangs ./cat_with_cpplines
+    patchShebangs ./
   '';
 
   configureFlags = [
diff --git a/pkgs/development/libraries/physics/thepeg/default.nix b/pkgs/development/libraries/physics/thepeg/default.nix
index 63bc3c06e102..046413c64f49 100644
--- a/pkgs/development/libraries/physics/thepeg/default.nix
+++ b/pkgs/development/libraries/physics/thepeg/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "thepeg-${version}";
-  version = "2.1.4";
+  version = "2.1.5";
 
   src = fetchurl {
     url = "https://www.hepforge.org/archive/thepeg/ThePEG-${version}.tar.bz2";
-    sha256 = "1x9dfxmsbmzmsxrv3cczfyrnqkxjcpy89v6v7ycysrx9k8qkf320";
+    sha256 = "1rmmwhk9abn9mc9j3127axjwpvymv21ld4wcivwz01pldkxh06n6";
   };
 
   buildInputs = [ boost fastjet gsl hepmc lhapdf rivet zlib ];
diff --git a/pkgs/development/libraries/wolfssl/default.nix b/pkgs/development/libraries/wolfssl/default.nix
index 8f3808bffcbc..e7feaabc739a 100644
--- a/pkgs/development/libraries/wolfssl/default.nix
+++ b/pkgs/development/libraries/wolfssl/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   name = "wolfssl-${version}";
-  version = "3.15.7";
+  version = "4.0.0";
 
   src = fetchFromGitHub {
     owner = "wolfSSL";
     repo = "wolfssl";
     rev = "v${version}-stable";
-    sha256 = "128z1f7nry278kdjzq950cr81bml8p17fgdchmpvy0awhh7r20y9";
+    sha256 = "155lmgz81ky0x04c8m2yzlsm58i9jk6hiw1ajc3wizvbpczbca57";
   };
 
   configureFlags = [ "--enable-all" ];
diff --git a/pkgs/development/python-modules/aioesphomeapi/default.nix b/pkgs/development/python-modules/aioesphomeapi/default.nix
index 39545e61ecdc..80c85a2614ca 100644
--- a/pkgs/development/python-modules/aioesphomeapi/default.nix
+++ b/pkgs/development/python-modules/aioesphomeapi/default.nix
@@ -1,4 +1,4 @@
-{ buildPythonPackage, fetchPypi, attrs, protobuf, zeroconf }:
+{ lib, buildPythonPackage, fetchPypi, attrs, protobuf, zeroconf }:
 
 buildPythonPackage rec {
   pname = "aioesphomeapi";
@@ -11,5 +11,13 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ attrs protobuf zeroconf ];
 
-  meta = {};
+  # no tests implemented
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Python Client for ESPHome native API";
+    homepage = https://github.com/esphome/aioesphomeapi;
+    license = licenses.mit;
+    maintainers = with maintainers; [ dotlambda ];
+  };
 }
diff --git a/pkgs/development/python-modules/cmd2/default.nix b/pkgs/development/python-modules/cmd2/default.nix
index ff9e70b41463..5751d62b9fce 100644
--- a/pkgs/development/python-modules/cmd2/default.nix
+++ b/pkgs/development/python-modules/cmd2/default.nix
@@ -6,11 +6,11 @@
 }:
 buildPythonPackage rec {
   pname = "cmd2";
-  version = "0.9.10";
+  version = "0.9.11";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "00d68374abe02363a417160e5836022be5c8f8bdac1da5dd101fadb6f8e96619";
+    sha256 = "0hjj587dwnl5767wbl875vglvdr1f5z5jzb5wliip78lbyq3b8rl";
   };
 
   LC_ALL="en_US.UTF-8";
diff --git a/pkgs/development/python-modules/ldap/default.nix b/pkgs/development/python-modules/ldap/default.nix
index 09d399d25b37..8f5cd7e7e881 100644
--- a/pkgs/development/python-modules/ldap/default.nix
+++ b/pkgs/development/python-modules/ldap/default.nix
@@ -4,11 +4,11 @@
 
 buildPythonPackage rec {
   pname = "python-ldap";
-  version = "3.1.0";
+  version = "3.2.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "41975e79406502c092732c57ef0c2c2eb318d91e8e765f81f5d4ab6c1db727c5";
+    sha256 = "13nvrhp85yr0jyxixcjj012iw8l9wynxxlykm9j3alss6waln73x";
   };
 
   propagatedBuildInputs = [ pyasn1 pyasn1-modules ];
@@ -28,4 +28,10 @@ buildPythonPackage rec {
   '';
 
   doCheck = !stdenv.isDarwin;
+
+  meta = with stdenv.lib; {
+    description = "Python modules for implementing LDAP clients";
+    homepage = https://www.python-ldap.org/;
+    license = licenses.psfl;
+  };
 }
diff --git a/pkgs/development/python-modules/ldappool/default.nix b/pkgs/development/python-modules/ldappool/default.nix
index 460d743b1eda..3ad0ae3b7232 100644
--- a/pkgs/development/python-modules/ldappool/default.nix
+++ b/pkgs/development/python-modules/ldappool/default.nix
@@ -1,5 +1,5 @@
 { lib, buildPythonPackage, fetchPypi
-, pbr, ldap, fixtures, testresources, testtools }:
+, pbr, ldap, prettytable, fixtures, testresources, testtools }:
 
 buildPythonPackage rec {
   name = "ldappool-${version}";
@@ -11,9 +11,14 @@ buildPythonPackage rec {
     sha256 = "d9c9ec29be3f3e64164be84fe080a3087108836f307a12ec62f7d18988293df3";
   };
 
+  postPatch = ''
+    # Tests run without most of the dependencies
+    echo "" > test-requirements.txt
+  '';
+
   nativeBuildInputs = [ pbr ];
 
-  propagatedBuildInputs = [ ldap ];
+  propagatedBuildInputs = [ ldap prettytable ];
 
   checkInputs = [ fixtures testresources testtools ];
 
diff --git a/pkgs/development/python-modules/netdisco/default.nix b/pkgs/development/python-modules/netdisco/default.nix
index d3fac8df084a..1c9af258995d 100644
--- a/pkgs/development/python-modules/netdisco/default.nix
+++ b/pkgs/development/python-modules/netdisco/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "netdisco";
-  version = "2.5.0";
+  version = "2.6.0";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2ecb9830ceed5cf8f2ccc5a9bbe02ca5f6851435f5315a5402f0123311f13b37";
+    sha256 = "2b3aca14a1807712a053f11fd80dc251dd821ee4899aefece515287981817762";
   };
 
   propagatedBuildInputs = [ requests zeroconf netifaces ];
diff --git a/pkgs/misc/vscode-extensions/default.nix b/pkgs/misc/vscode-extensions/default.nix
index f62c7f5906ee..1c4c59f4ecb1 100644
--- a/pkgs/misc/vscode-extensions/default.nix
+++ b/pkgs/misc/vscode-extensions/default.nix
@@ -56,8 +56,8 @@ rec {
     mktplcRef = {
       name = "vim";
       publisher = "vscodevim";
-      version = "1.2.0";
-      sha256 = "0c7nv3razc3xjjzmb0q9a89dgry77h79rbkmc8nbfpa1if7lsvcp";
+      version = "1.3.0";
+      sha256 = "18z24w7smjjnv945f8qyy6dl95xckyqa6gg3gijfcigvq5sgyawc";
     };
     meta = {
       license = stdenv.lib.licenses.mit;
diff --git a/pkgs/servers/home-assistant/appdaemon.nix b/pkgs/servers/home-assistant/appdaemon.nix
index b2a58ce61ba6..ca8ddbc7af33 100644
--- a/pkgs/servers/home-assistant/appdaemon.nix
+++ b/pkgs/servers/home-assistant/appdaemon.nix
@@ -40,10 +40,10 @@ let
       });
 
       pyyaml = super.pyyaml.overridePythonAttrs (oldAttrs: rec {
-        version = "3.13";
+        version = "5.1";
         src = oldAttrs.src.override {
           inherit version;
-          sha256 = "3ef3092145e9b70e3ddd2c7ad59bdd0252a94dfe3949721633e41344de00a6bf";
+          sha256 = "436bc774ecf7c103814098159fbb84c2715d25980175292c648f2da143909f95";
         };
       });
 
@@ -52,11 +52,11 @@ let
 
 in python.pkgs.buildPythonApplication rec {
   pname = "appdaemon";
-  version = "3.0.3";
+  version = "3.0.4";
 
   src = python.pkgs.fetchPypi {
     inherit pname version;
-    sha256 = "3e2f5184a51a3b2b473610704344d188226bd7e9a2c2fb762ee90621d38390c6";
+    sha256 = "e2393b5e0bb34e94e61f5debc95ad74c1c6929635b74bf8ba15c22b40cbdec69";
   };
 
   propagatedBuildInputs = with python.pkgs; [
diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix
index 778b132bb700..26dd0fa877b6 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 = "0.90.2";
+  version = "0.91.1";
   components = {
     "abode" = ps: with ps; [  ];
     "abode.alarm_control_panel" = ps: with ps; [  ];
@@ -13,33 +13,29 @@
     "abode.lock" = ps: with ps; [  ];
     "abode.sensor" = ps: with ps; [  ];
     "abode.switch" = ps: with ps; [  ];
+    "acer_projector" = ps: with ps; [  ];
+    "acer_projector.switch" = ps: with ps; [ pyserial ];
+    "actiontec" = ps: with ps; [  ];
+    "actiontec.device_tracker" = ps: with ps; [  ];
     "ads" = ps: with ps; [  ];
     "ads.binary_sensor" = ps: with ps; [  ];
     "ads.light" = ps: with ps; [  ];
     "ads.sensor" = ps: with ps; [  ];
     "ads.switch" = ps: with ps; [  ];
+    "aftership" = ps: with ps; [  ];
+    "aftership.sensor" = ps: with ps; [  ];
     "air_quality" = ps: with ps; [  ];
-    "air_quality.demo" = ps: with ps; [  ];
-    "air_quality.nilu" = ps: with ps; [  ];
-    "air_quality.norway_air" = ps: with ps; [  ];
-    "air_quality.opensensemap" = ps: with ps; [  ];
+    "airvisual" = ps: with ps; [  ];
+    "airvisual.sensor" = ps: with ps; [ pyairvisual ];
+    "aladdin_connect" = ps: with ps; [  ];
+    "aladdin_connect.cover" = ps: with ps; [  ];
     "alarm_control_panel" = ps: with ps; [  ];
-    "alarm_control_panel.alarmdotcom" = ps: with ps; [  ];
-    "alarm_control_panel.canary" = ps: with ps; [  ];
-    "alarm_control_panel.concord232" = ps: with ps; [  ];
-    "alarm_control_panel.demo" = ps: with ps; [  ];
-    "alarm_control_panel.ialarm" = ps: with ps; [  ];
-    "alarm_control_panel.manual" = ps: with ps; [  ];
-    "alarm_control_panel.manual_mqtt" = ps: with ps; [ paho-mqtt ];
-    "alarm_control_panel.ness_alarm" = ps: with ps; [  ];
-    "alarm_control_panel.nx584" = ps: with ps; [  ];
-    "alarm_control_panel.spc" = ps: with ps; [  ];
-    "alarm_control_panel.totalconnect" = ps: with ps; [  ];
-    "alarm_control_panel.yale_smart_alarm" = ps: with ps; [  ];
     "alarmdecoder" = ps: with ps; [  ];
     "alarmdecoder.alarm_control_panel" = ps: with ps; [  ];
     "alarmdecoder.binary_sensor" = ps: with ps; [  ];
     "alarmdecoder.sensor" = ps: with ps; [  ];
+    "alarmdotcom" = ps: with ps; [  ];
+    "alarmdotcom.alarm_control_panel" = ps: with ps; [  ];
     "alert" = ps: with ps; [  ];
     "alexa" = ps: with ps; [ aiohttp-cors ];
     "alexa.auth" = ps: with ps; [  ];
@@ -47,6 +43,10 @@
     "alexa.flash_briefings" = ps: with ps; [  ];
     "alexa.intent" = ps: with ps; [  ];
     "alexa.smart_home" = ps: with ps; [  ];
+    "alpha_vantage" = ps: with ps; [  ];
+    "alpha_vantage.sensor" = ps: with ps; [  ];
+    "amazon_polly" = ps: with ps; [  ];
+    "amazon_polly.tts" = ps: with ps; [ boto3 ];
     "ambient_station" = ps: with ps; [  ];
     "ambient_station.binary_sensor" = ps: with ps; [  ];
     "ambient_station.config_flow" = ps: with ps; [  ];
@@ -62,34 +62,59 @@
     "android_ip_webcam.switch" = ps: with ps; [  ];
     "androidtv" = ps: with ps; [  ];
     "androidtv.media_player" = ps: with ps; [  ];
+    "anel_pwrctrl" = ps: with ps; [  ];
+    "anel_pwrctrl.switch" = ps: with ps; [  ];
+    "anthemav" = ps: with ps; [  ];
+    "anthemav.media_player" = ps: with ps; [  ];
     "apcupsd" = ps: with ps; [  ];
     "apcupsd.binary_sensor" = ps: with ps; [  ];
     "apcupsd.sensor" = ps: with ps; [  ];
     "api" = ps: with ps; [ aiohttp-cors ];
+    "api_streams" = ps: with ps; [  ];
+    "apns" = ps: with ps; [  ];
+    "apns.notify" = ps: with ps; [  ];
     "apple_tv" = ps: with ps; [ pyatv ];
     "apple_tv.media_player" = ps: with ps; [ pyatv ];
     "apple_tv.remote" = ps: with ps; [ pyatv ];
     "aqualogic" = ps: with ps; [  ];
     "aqualogic.sensor" = ps: with ps; [  ];
     "aqualogic.switch" = ps: with ps; [  ];
+    "aquostv" = ps: with ps; [  ];
+    "aquostv.media_player" = ps: with ps; [  ];
     "arduino" = ps: with ps; [  ];
     "arduino.sensor" = ps: with ps; [  ];
     "arduino.switch" = ps: with ps; [  ];
+    "arest" = ps: with ps; [  ];
+    "arest.binary_sensor" = ps: with ps; [  ];
+    "arest.sensor" = ps: with ps; [  ];
+    "arest.switch" = ps: with ps; [  ];
     "arlo" = ps: with ps; [  ];
     "arlo.alarm_control_panel" = ps: with ps; [  ];
     "arlo.camera" = ps: with ps; [ ha-ffmpeg ];
     "arlo.sensor" = ps: with ps; [  ];
+    "aruba" = ps: with ps; [  ];
+    "aruba.device_tracker" = ps: with ps; [ pexpect ];
+    "arwn" = ps: with ps; [  ];
+    "arwn.sensor" = ps: with ps; [ paho-mqtt ];
+    "asterisk_cdr" = ps: with ps; [  ];
+    "asterisk_cdr.mailbox" = ps: with ps; [  ];
     "asterisk_mbox" = ps: with ps; [  ];
     "asterisk_mbox.mailbox" = ps: with ps; [  ];
     "asuswrt" = ps: with ps; [  ];
+    "asuswrt.device_tracker" = ps: with ps; [  ];
+    "asuswrt.sensor" = ps: with ps; [  ];
     "august" = ps: with ps; [  ];
     "august.binary_sensor" = ps: with ps; [  ];
     "august.camera" = ps: with ps; [  ];
     "august.lock" = ps: with ps; [  ];
+    "aurora" = ps: with ps; [  ];
+    "aurora.binary_sensor" = ps: with ps; [  ];
     "auth" = ps: with ps; [ aiohttp-cors ];
     "auth.indieauth" = ps: with ps; [  ];
     "auth.login_flow" = ps: with ps; [  ];
     "auth.mfa_setup_flow" = ps: with ps; [  ];
+    "automatic" = ps: with ps; [  ];
+    "automatic.device_tracker" = ps: with ps; [ aiohttp-cors ];
     "automation" = ps: with ps; [  ];
     "automation.event" = ps: with ps; [  ];
     "automation.geo_location" = ps: with ps; [  ];
@@ -104,108 +129,129 @@
     "automation.time_pattern" = ps: with ps; [  ];
     "automation.webhook" = ps: with ps; [ aiohttp-cors ];
     "automation.zone" = ps: with ps; [  ];
+    "avion" = ps: with ps; [  ];
+    "avion.light" = ps: with ps; [  ];
+    "awair" = ps: with ps; [  ];
+    "awair.sensor" = ps: with ps; [  ];
+    "aws" = ps: with ps; [  ];
+    "aws.config_flow" = ps: with ps; [  ];
+    "aws.const" = ps: with ps; [  ];
+    "aws.notify" = ps: with ps; [  ];
+    "aws_lambda" = ps: with ps; [  ];
+    "aws_lambda.notify" = ps: with ps; [ boto3 ];
+    "aws_sns" = ps: with ps; [  ];
+    "aws_sns.notify" = ps: with ps; [ boto3 ];
+    "aws_sqs" = ps: with ps; [  ];
+    "aws_sqs.notify" = ps: with ps; [ boto3 ];
     "axis" = ps: with ps; [  ];
     "axis.binary_sensor" = ps: with ps; [  ];
     "axis.camera" = ps: with ps; [  ];
+    "axis.config_flow" = ps: with ps; [  ];
+    "axis.const" = ps: with ps; [  ];
+    "axis.device" = ps: with ps; [  ];
+    "axis.errors" = ps: with ps; [  ];
+    "baidu" = ps: with ps; [  ];
+    "baidu.tts" = ps: with ps; [  ];
+    "bayesian" = ps: with ps; [  ];
+    "bayesian.binary_sensor" = ps: with ps; [  ];
     "bbb_gpio" = ps: with ps; [  ];
     "bbb_gpio.binary_sensor" = ps: with ps; [  ];
     "bbb_gpio.switch" = ps: with ps; [  ];
+    "bbox" = ps: with ps; [  ];
+    "bbox.device_tracker" = ps: with ps; [  ];
+    "bbox.sensor" = ps: with ps; [  ];
+    "bh1750" = ps: with ps; [  ];
+    "bh1750.sensor" = ps: with ps; [  ];
     "binary_sensor" = ps: with ps; [  ];
-    "binary_sensor.arest" = ps: with ps; [  ];
-    "binary_sensor.aurora" = ps: with ps; [  ];
-    "binary_sensor.bayesian" = ps: with ps; [  ];
-    "binary_sensor.command_line" = ps: with ps; [  ];
-    "binary_sensor.concord232" = ps: with ps; [  ];
-    "binary_sensor.demo" = ps: with ps; [  ];
-    "binary_sensor.ffmpeg_motion" = ps: with ps; [ ha-ffmpeg ];
-    "binary_sensor.ffmpeg_noise" = ps: with ps; [ ha-ffmpeg ];
-    "binary_sensor.flic" = ps: with ps; [  ];
-    "binary_sensor.hikvision" = ps: with ps; [  ];
-    "binary_sensor.iss" = ps: with ps; [  ];
-    "binary_sensor.mystrom" = ps: with ps; [ aiohttp-cors ];
-    "binary_sensor.ness_alarm" = ps: with ps; [  ];
-    "binary_sensor.nx584" = ps: with ps; [  ];
-    "binary_sensor.ping" = ps: with ps; [  ];
-    "binary_sensor.random" = ps: with ps; [  ];
-    "binary_sensor.rest" = ps: with ps; [  ];
-    "binary_sensor.rflink" = ps: with ps; [  ];
-    "binary_sensor.ring" = ps: with ps; [  ];
-    "binary_sensor.sleepiq" = ps: with ps; [  ];
-    "binary_sensor.spc" = ps: with ps; [  ];
-    "binary_sensor.tapsaff" = ps: with ps; [  ];
-    "binary_sensor.tcp" = ps: with ps; [  ];
-    "binary_sensor.template" = ps: with ps; [  ];
-    "binary_sensor.threshold" = ps: with ps; [  ];
-    "binary_sensor.tod" = ps: with ps; [  ];
-    "binary_sensor.trend" = ps: with ps; [ numpy ];
-    "binary_sensor.uptimerobot" = ps: with ps; [  ];
-    "binary_sensor.vultr" = ps: with ps; [ vultr ];
-    "binary_sensor.workday" = ps: with ps; [  ];
+    "bitcoin" = ps: with ps; [  ];
+    "bitcoin.sensor" = ps: with ps; [  ];
+    "blackbird" = ps: with ps; [  ];
+    "blackbird.media_player" = ps: with ps; [  ];
     "blink" = ps: with ps; [  ];
     "blink.alarm_control_panel" = ps: with ps; [  ];
     "blink.binary_sensor" = ps: with ps; [  ];
     "blink.camera" = ps: with ps; [  ];
     "blink.sensor" = ps: with ps; [  ];
+    "blinksticklight" = ps: with ps; [  ];
+    "blinksticklight.light" = ps: with ps; [ BlinkStick ];
+    "blinkt" = ps: with ps; [  ];
+    "blinkt.light" = ps: with ps; [  ];
+    "blockchain" = ps: with ps; [  ];
+    "blockchain.sensor" = ps: with ps; [  ];
     "bloomsky" = ps: with ps; [  ];
     "bloomsky.binary_sensor" = ps: with ps; [  ];
     "bloomsky.camera" = ps: with ps; [  ];
     "bloomsky.sensor" = ps: with ps; [  ];
+    "bluesound" = ps: with ps; [  ];
+    "bluesound.media_player" = ps: with ps; [ xmltodict ];
+    "bluetooth_le_tracker" = ps: with ps; [  ];
+    "bluetooth_le_tracker.device_tracker" = ps: with ps; [  ];
+    "bluetooth_tracker" = ps: with ps; [  ];
+    "bluetooth_tracker.device_tracker" = ps: with ps; [ bt_proximity ];
+    "bme280" = ps: with ps; [  ];
+    "bme280.sensor" = ps: with ps; [  ];
+    "bme680" = ps: with ps; [  ];
+    "bme680.sensor" = ps: with ps; [  ];
     "bmw_connected_drive" = ps: with ps; [  ];
     "bmw_connected_drive.binary_sensor" = ps: with ps; [  ];
     "bmw_connected_drive.device_tracker" = ps: with ps; [  ];
     "bmw_connected_drive.lock" = ps: with ps; [  ];
     "bmw_connected_drive.sensor" = ps: with ps; [  ];
+    "bom" = ps: with ps; [  ];
+    "bom.sensor" = ps: with ps; [  ];
+    "bom.weather" = ps: with ps; [  ];
+    "braviatv" = ps: with ps; [  ];
+    "braviatv.media_player" = ps: with ps; [  ];
+    "broadlink" = ps: with ps; [  ];
+    "broadlink.sensor" = ps: with ps; [ broadlink ];
+    "broadlink.switch" = ps: with ps; [ broadlink ];
+    "brottsplatskartan" = ps: with ps; [  ];
+    "brottsplatskartan.sensor" = ps: with ps; [  ];
     "browser" = ps: with ps; [  ];
+    "brunt" = ps: with ps; [  ];
+    "brunt.cover" = ps: with ps; [  ];
+    "bt_home_hub_5" = ps: with ps; [  ];
+    "bt_home_hub_5.device_tracker" = ps: with ps; [  ];
+    "bt_smarthub" = ps: with ps; [  ];
+    "bt_smarthub.device_tracker" = ps: with ps; [  ];
+    "buienradar" = ps: with ps; [  ];
+    "buienradar.sensor" = ps: with ps; [  ];
+    "buienradar.weather" = ps: with ps; [  ];
+    "caldav" = ps: with ps; [  ];
+    "caldav.calendar" = ps: with ps; [  ];
     "calendar" = ps: with ps; [ aiohttp-cors ];
-    "calendar.caldav" = ps: with ps; [  ];
-    "calendar.demo" = ps: with ps; [  ];
-    "calendar.todoist" = ps: with ps; [ todoist ];
     "camera" = ps: with ps; [ aiohttp-cors ];
-    "camera.canary" = ps: with ps; [ ha-ffmpeg ];
-    "camera.demo" = ps: with ps; [  ];
-    "camera.familyhub" = ps: with ps; [  ];
-    "camera.ffmpeg" = ps: with ps; [ ha-ffmpeg ];
-    "camera.foscam" = ps: with ps; [  ];
-    "camera.generic" = ps: with ps; [  ];
-    "camera.local_file" = ps: with ps; [  ];
-    "camera.mjpeg" = ps: with ps; [  ];
-    "camera.onvif" = ps: with ps; [ ha-ffmpeg ];
-    "camera.proxy" = ps: with ps; [ pillow ];
-    "camera.push" = ps: with ps; [ aiohttp-cors ];
-    "camera.ring" = ps: with ps; [ ha-ffmpeg ];
-    "camera.rpi_camera" = ps: with ps; [  ];
-    "camera.synology" = ps: with ps; [  ];
-    "camera.uvc" = ps: with ps; [  ];
-    "camera.xeoma" = ps: with ps; [  ];
-    "camera.xiaomi" = ps: with ps; [ ha-ffmpeg ];
-    "camera.yi" = ps: with ps; [ ha-ffmpeg ];
+    "camera.const" = ps: with ps; [  ];
+    "camera.prefs" = ps: with ps; [  ];
     "canary" = ps: with ps; [  ];
+    "canary.alarm_control_panel" = ps: with ps; [  ];
+    "canary.camera" = ps: with ps; [ ha-ffmpeg ];
+    "canary.sensor" = ps: with ps; [  ];
     "cast" = ps: with ps; [ PyChromecast ];
     "cast.media_player" = ps: with ps; [ PyChromecast ];
+    "cert_expiry" = ps: with ps; [  ];
+    "cert_expiry.sensor" = ps: with ps; [  ];
+    "channels" = ps: with ps; [  ];
+    "channels.media_player" = ps: with ps; [  ];
+    "cisco_ios" = ps: with ps; [  ];
+    "cisco_ios.device_tracker" = ps: with ps; [ pexpect ];
     "cisco_mobility_express" = ps: with ps; [  ];
     "cisco_mobility_express.device_tracker" = ps: with ps; [  ];
+    "ciscospark" = ps: with ps; [  ];
+    "ciscospark.notify" = ps: with ps; [  ];
+    "citybikes" = ps: with ps; [  ];
+    "citybikes.sensor" = ps: with ps; [  ];
+    "clementine" = ps: with ps; [  ];
+    "clementine.media_player" = ps: with ps; [  ];
+    "clickatell" = ps: with ps; [  ];
+    "clickatell.notify" = ps: with ps; [  ];
+    "clicksend" = ps: with ps; [  ];
+    "clicksend.notify" = ps: with ps; [  ];
+    "clicksend_tts" = ps: with ps; [  ];
+    "clicksend_tts.notify" = ps: with ps; [  ];
     "climate" = ps: with ps; [  ];
     "climate.const" = ps: with ps; [  ];
-    "climate.coolmaster" = ps: with ps; [  ];
-    "climate.demo" = ps: with ps; [  ];
-    "climate.dyson" = ps: with ps; [  ];
-    "climate.ephember" = ps: with ps; [  ];
-    "climate.eq3btsmart" = ps: with ps; [ construct ];
-    "climate.flexit" = ps: with ps; [  ];
-    "climate.generic_thermostat" = ps: with ps; [  ];
-    "climate.heatmiser" = ps: with ps; [  ];
-    "climate.honeywell" = ps: with ps; [  ];
-    "climate.melissa" = ps: with ps; [  ];
-    "climate.mill" = ps: with ps; [  ];
-    "climate.nuheat" = ps: with ps; [  ];
-    "climate.oem" = ps: with ps; [  ];
-    "climate.proliphix" = ps: with ps; [  ];
-    "climate.radiotherm" = ps: with ps; [  ];
     "climate.reproduce_state" = ps: with ps; [  ];
-    "climate.sensibo" = ps: with ps; [  ];
-    "climate.touchline" = ps: with ps; [  ];
-    "climate.venstar" = ps: with ps; [  ];
-    "climate.zhong_hong" = ps: with ps; [  ];
     "cloud" = ps: with ps; [ aiohttp-cors ];
     "cloud.binary_sensor" = ps: with ps; [ aiohttp-cors ];
     "cloud.const" = ps: with ps; [  ];
@@ -213,10 +259,28 @@
     "cloud.prefs" = ps: with ps; [  ];
     "cloud.utils" = ps: with ps; [  ];
     "cloudflare" = ps: with ps; [  ];
+    "cmus" = ps: with ps; [  ];
+    "cmus.media_player" = ps: with ps; [  ];
+    "co2signal" = ps: with ps; [  ];
+    "co2signal.sensor" = ps: with ps; [  ];
     "coinbase" = ps: with ps; [  ];
+    "coinbase.sensor" = ps: with ps; [  ];
+    "coinmarketcap" = ps: with ps; [  ];
+    "coinmarketcap.sensor" = ps: with ps; [ coinmarketcap ];
+    "comed_hourly_pricing" = ps: with ps; [  ];
+    "comed_hourly_pricing.sensor" = ps: with ps; [  ];
     "comfoconnect" = ps: with ps; [  ];
     "comfoconnect.fan" = ps: with ps; [  ];
     "comfoconnect.sensor" = ps: with ps; [  ];
+    "command_line" = ps: with ps; [  ];
+    "command_line.binary_sensor" = ps: with ps; [  ];
+    "command_line.cover" = ps: with ps; [  ];
+    "command_line.notify" = ps: with ps; [  ];
+    "command_line.sensor" = ps: with ps; [  ];
+    "command_line.switch" = ps: with ps; [  ];
+    "concord232" = ps: with ps; [  ];
+    "concord232.alarm_control_panel" = ps: with ps; [  ];
+    "concord232.binary_sensor" = ps: with ps; [  ];
     "config" = ps: with ps; [ aiohttp-cors ];
     "config.area_registry" = ps: with ps; [  ];
     "config.auth" = ps: with ps; [  ];
@@ -232,31 +296,36 @@
     "configurator" = ps: with ps; [  ];
     "conversation" = ps: with ps; [ aiohttp-cors ];
     "conversation.util" = ps: with ps; [  ];
+    "coolmaster" = ps: with ps; [  ];
+    "coolmaster.climate" = ps: with ps; [  ];
     "counter" = ps: with ps; [  ];
     "cover" = ps: with ps; [  ];
-    "cover.aladdin_connect" = ps: with ps; [  ];
-    "cover.brunt" = ps: with ps; [  ];
-    "cover.command_line" = ps: with ps; [  ];
-    "cover.demo" = ps: with ps; [  ];
-    "cover.garadget" = ps: with ps; [  ];
-    "cover.gogogate2" = ps: with ps; [  ];
-    "cover.group" = ps: with ps; [  ];
-    "cover.myq" = ps: with ps; [  ];
-    "cover.opengarage" = ps: with ps; [  ];
-    "cover.rflink" = ps: with ps; [  ];
-    "cover.template" = ps: with ps; [  ];
     "cppm_tracker" = ps: with ps; [  ];
     "cppm_tracker.device_tracker" = ps: with ps; [  ];
+    "cpuspeed" = ps: with ps; [  ];
+    "cpuspeed.sensor" = ps: with ps; [ py-cpuinfo ];
+    "crimereports" = ps: with ps; [  ];
+    "crimereports.sensor" = ps: with ps; [  ];
+    "cups" = ps: with ps; [  ];
+    "cups.sensor" = ps: with ps; [ pycups ];
+    "currencylayer" = ps: with ps; [  ];
+    "currencylayer.sensor" = ps: with ps; [  ];
     "daikin" = ps: with ps; [  ];
     "daikin.climate" = ps: with ps; [  ];
     "daikin.config_flow" = ps: with ps; [  ];
     "daikin.const" = ps: with ps; [  ];
     "daikin.sensor" = ps: with ps; [  ];
+    "daikin.switch" = ps: with ps; [  ];
     "danfoss_air" = ps: with ps; [  ];
     "danfoss_air.binary_sensor" = ps: with ps; [  ];
     "danfoss_air.sensor" = ps: with ps; [  ];
     "danfoss_air.switch" = ps: with ps; [  ];
+    "darksky" = ps: with ps; [  ];
+    "darksky.sensor" = ps: with ps; [ python-forecastio ];
+    "darksky.weather" = ps: with ps; [ python-forecastio ];
     "datadog" = ps: with ps; [ datadog ];
+    "ddwrt" = ps: with ps; [  ];
+    "ddwrt.device_tracker" = ps: with ps; [  ];
     "deconz" = ps: with ps; [  ];
     "deconz.binary_sensor" = ps: with ps; [  ];
     "deconz.climate" = ps: with ps; [  ];
@@ -264,68 +333,77 @@
     "deconz.const" = ps: with ps; [  ];
     "deconz.cover" = ps: with ps; [  ];
     "deconz.deconz_device" = ps: with ps; [  ];
+    "deconz.errors" = ps: with ps; [  ];
     "deconz.gateway" = ps: with ps; [  ];
     "deconz.light" = ps: with ps; [  ];
     "deconz.scene" = ps: with ps; [  ];
     "deconz.sensor" = ps: with ps; [  ];
     "deconz.switch" = ps: with ps; [  ];
+    "decora" = ps: with ps; [  ];
+    "decora.light" = ps: with ps; [  ];
+    "decora_wifi" = ps: with ps; [  ];
+    "decora_wifi.light" = ps: with ps; [  ];
     "default_config" = ps: with ps; [ pynacl aiohttp-cors distro sqlalchemy zeroconf ];
+    "deluge" = ps: with ps; [  ];
+    "deluge.sensor" = ps: with ps; [ deluge-client ];
+    "deluge.switch" = ps: with ps; [ deluge-client ];
     "demo" = ps: with ps; [ aiohttp-cors ];
+    "demo.air_quality" = ps: with ps; [  ];
+    "demo.alarm_control_panel" = ps: with ps; [  ];
+    "demo.binary_sensor" = ps: with ps; [  ];
+    "demo.calendar" = ps: with ps; [  ];
+    "demo.camera" = ps: with ps; [  ];
+    "demo.climate" = ps: with ps; [  ];
+    "demo.cover" = ps: with ps; [  ];
+    "demo.device_tracker" = ps: with ps; [  ];
+    "demo.fan" = ps: with ps; [  ];
+    "demo.geo_location" = ps: with ps; [  ];
+    "demo.image_processing" = ps: with ps; [  ];
+    "demo.light" = ps: with ps; [  ];
+    "demo.lock" = ps: with ps; [  ];
+    "demo.mailbox" = ps: with ps; [  ];
+    "demo.media_player" = ps: with ps; [  ];
+    "demo.notify" = ps: with ps; [  ];
     "demo.remote" = ps: with ps; [  ];
+    "demo.sensor" = ps: with ps; [  ];
+    "demo.switch" = ps: with ps; [  ];
+    "demo.tts" = ps: with ps; [  ];
+    "demo.vacuum" = ps: with ps; [  ];
+    "demo.water_heater" = ps: with ps; [  ];
+    "demo.weather" = ps: with ps; [  ];
+    "denon" = ps: with ps; [  ];
+    "denon.media_player" = ps: with ps; [  ];
+    "denonavr" = ps: with ps; [  ];
+    "denonavr.media_player" = ps: with ps; [  ];
+    "deutsche_bahn" = ps: with ps; [  ];
+    "deutsche_bahn.sensor" = ps: with ps; [  ];
     "device_sun_light_trigger" = ps: with ps; [  ];
     "device_tracker" = ps: with ps; [  ];
-    "device_tracker.actiontec" = ps: with ps; [  ];
-    "device_tracker.aruba" = ps: with ps; [ pexpect ];
-    "device_tracker.asuswrt" = ps: with ps; [  ];
-    "device_tracker.automatic" = ps: with ps; [ aiohttp-cors ];
-    "device_tracker.bbox" = ps: with ps; [  ];
-    "device_tracker.bluetooth_le_tracker" = ps: with ps; [  ];
-    "device_tracker.bluetooth_tracker" = ps: with ps; [ bt_proximity ];
-    "device_tracker.bt_home_hub_5" = ps: with ps; [  ];
-    "device_tracker.bt_smarthub" = ps: with ps; [  ];
-    "device_tracker.cisco_ios" = ps: with ps; [ pexpect ];
-    "device_tracker.ddwrt" = ps: with ps; [  ];
-    "device_tracker.demo" = ps: with ps; [  ];
-    "device_tracker.ee_brightbox" = ps: with ps; [  ];
-    "device_tracker.fritz" = ps: with ps; [ fritzconnection ];
-    "device_tracker.google_maps" = ps: with ps; [  ];
-    "device_tracker.hitron_coda" = ps: with ps; [  ];
-    "device_tracker.huawei_router" = ps: with ps; [  ];
-    "device_tracker.icloud" = ps: with ps; [  ];
-    "device_tracker.keenetic_ndms2" = ps: with ps; [  ];
-    "device_tracker.linksys_ap" = ps: with ps; [ beautifulsoup4 ];
-    "device_tracker.linksys_smart" = ps: with ps; [  ];
-    "device_tracker.luci" = ps: with ps; [  ];
-    "device_tracker.meraki" = ps: with ps; [ aiohttp-cors ];
-    "device_tracker.mikrotik" = ps: with ps; [  ];
-    "device_tracker.mqtt_json" = ps: with ps; [ paho-mqtt ];
-    "device_tracker.netgear" = ps: with ps; [  ];
-    "device_tracker.nmap_tracker" = ps: with ps; [  ];
-    "device_tracker.ping" = ps: with ps; [  ];
-    "device_tracker.quantum_gateway" = ps: with ps; [  ];
-    "device_tracker.ritassist" = ps: with ps; [  ];
-    "device_tracker.sky_hub" = ps: with ps; [  ];
-    "device_tracker.snmp" = ps: with ps; [ pysnmp ];
-    "device_tracker.swisscom" = ps: with ps; [  ];
-    "device_tracker.synology_srm" = ps: with ps; [  ];
-    "device_tracker.thomson" = ps: with ps; [  ];
-    "device_tracker.tile" = ps: with ps; [  ];
-    "device_tracker.tomato" = ps: with ps; [  ];
-    "device_tracker.tplink" = ps: with ps; [  ];
-    "device_tracker.traccar" = ps: with ps; [  ];
-    "device_tracker.trackr" = ps: with ps; [  ];
-    "device_tracker.ubee" = ps: with ps; [  ];
-    "device_tracker.ubus" = ps: with ps; [  ];
-    "device_tracker.unifi" = ps: with ps; [ pyunifi ];
-    "device_tracker.unifi_direct" = ps: with ps; [ pexpect ];
-    "device_tracker.upc_connect" = ps: with ps; [ defusedxml ];
-    "device_tracker.xfinity" = ps: with ps; [  ];
-    "device_tracker.xiaomi" = ps: with ps; [  ];
+    "dht" = ps: with ps; [  ];
+    "dht.sensor" = ps: with ps; [  ];
     "dialogflow" = ps: with ps; [ aiohttp-cors ];
     "digital_ocean" = ps: with ps; [ digital-ocean ];
     "digital_ocean.binary_sensor" = ps: with ps; [ digital-ocean ];
     "digital_ocean.switch" = ps: with ps; [ digital-ocean ];
+    "digitalloggers" = ps: with ps; [  ];
+    "digitalloggers.switch" = ps: with ps; [  ];
+    "directv" = ps: with ps; [  ];
+    "directv.media_player" = ps: with ps; [  ];
+    "discogs" = ps: with ps; [  ];
+    "discogs.sensor" = ps: with ps; [ discogs_client ];
+    "discord" = ps: with ps; [  ];
+    "discord.notify" = ps: with ps; [ discordpy ];
     "discovery" = ps: with ps; [ netdisco ];
+    "dlib_face_detect" = ps: with ps; [  ];
+    "dlib_face_detect.image_processing" = ps: with ps; [ face_recognition ];
+    "dlib_face_identify" = ps: with ps; [  ];
+    "dlib_face_identify.image_processing" = ps: with ps; [ face_recognition ];
+    "dlink" = ps: with ps; [  ];
+    "dlink.switch" = ps: with ps; [  ];
+    "dlna_dmr" = ps: with ps; [  ];
+    "dlna_dmr.media_player" = ps: with ps; [  ];
+    "dnsip" = ps: with ps; [  ];
+    "dnsip.sensor" = ps: with ps; [ aiodns ];
     "dominos" = ps: with ps; [ aiohttp-cors ];
     "doorbird" = ps: with ps; [  ];
     "doorbird.camera" = ps: with ps; [  ];
@@ -334,10 +412,28 @@
     "dovado.notify" = ps: with ps; [  ];
     "dovado.sensor" = ps: with ps; [  ];
     "downloader" = ps: with ps; [  ];
+    "dsmr" = ps: with ps; [  ];
+    "dsmr.sensor" = ps: with ps; [  ];
+    "dte_energy_bridge" = ps: with ps; [  ];
+    "dte_energy_bridge.sensor" = ps: with ps; [  ];
+    "dublin_bus_transport" = ps: with ps; [  ];
+    "dublin_bus_transport.sensor" = ps: with ps; [  ];
     "duckdns" = ps: with ps; [  ];
+    "duke_energy" = ps: with ps; [  ];
+    "duke_energy.sensor" = ps: with ps; [  ];
+    "dunehd" = ps: with ps; [  ];
+    "dunehd.media_player" = ps: with ps; [  ];
+    "dwd_weather_warnings" = ps: with ps; [  ];
+    "dwd_weather_warnings.sensor" = ps: with ps; [  ];
     "dweet" = ps: with ps; [  ];
     "dweet.sensor" = ps: with ps; [  ];
     "dyson" = ps: with ps; [  ];
+    "dyson.climate" = ps: with ps; [  ];
+    "dyson.fan" = ps: with ps; [  ];
+    "dyson.sensor" = ps: with ps; [  ];
+    "dyson.vacuum" = ps: with ps; [  ];
+    "ebox" = ps: with ps; [  ];
+    "ebox.sensor" = ps: with ps; [  ];
     "ebusd" = ps: with ps; [  ];
     "ebusd.const" = ps: with ps; [  ];
     "ebusd.sensor" = ps: with ps; [  ];
@@ -350,17 +446,29 @@
     "ecobee.notify" = ps: with ps; [  ];
     "ecobee.sensor" = ps: with ps; [  ];
     "ecobee.weather" = ps: with ps; [  ];
+    "econet" = ps: with ps; [  ];
+    "econet.water_heater" = ps: with ps; [  ];
     "ecovacs" = ps: with ps; [  ];
     "ecovacs.vacuum" = ps: with ps; [  ];
+    "eddystone_temperature" = ps: with ps; [  ];
+    "eddystone_temperature.sensor" = ps: with ps; [ construct ];
+    "edimax" = ps: with ps; [  ];
+    "edimax.switch" = ps: with ps; [  ];
     "edp_redy" = ps: with ps; [  ];
     "edp_redy.sensor" = ps: with ps; [  ];
     "edp_redy.switch" = ps: with ps; [  ];
+    "ee_brightbox" = ps: with ps; [  ];
+    "ee_brightbox.device_tracker" = ps: with ps; [  ];
+    "efergy" = ps: with ps; [  ];
+    "efergy.sensor" = ps: with ps; [  ];
     "egardia" = ps: with ps; [  ];
     "egardia.alarm_control_panel" = ps: with ps; [  ];
     "egardia.binary_sensor" = ps: with ps; [  ];
     "eight_sleep" = ps: with ps; [  ];
     "eight_sleep.binary_sensor" = ps: with ps; [  ];
     "eight_sleep.sensor" = ps: with ps; [  ];
+    "eliqonline" = ps: with ps; [  ];
+    "eliqonline.sensor" = ps: with ps; [  ];
     "elkm1" = ps: with ps; [  ];
     "elkm1.alarm_control_panel" = ps: with ps; [  ];
     "elkm1.climate" = ps: with ps; [  ];
@@ -368,6 +476,10 @@
     "elkm1.scene" = ps: with ps; [  ];
     "elkm1.sensor" = ps: with ps; [  ];
     "elkm1.switch" = ps: with ps; [  ];
+    "emby" = ps: with ps; [  ];
+    "emby.media_player" = ps: with ps; [  ];
+    "emoncms" = ps: with ps; [  ];
+    "emoncms.sensor" = ps: with ps; [  ];
     "emoncms_history" = ps: with ps; [  ];
     "emulated_hue" = ps: with ps; [ aiohttp-cors ];
     "emulated_hue.hue_api" = ps: with ps; [  ];
@@ -383,31 +495,60 @@
     "enocean.light" = ps: with ps; [  ];
     "enocean.sensor" = ps: with ps; [  ];
     "enocean.switch" = ps: with ps; [  ];
+    "enphase_envoy" = ps: with ps; [  ];
+    "enphase_envoy.sensor" = ps: with ps; [  ];
+    "entur_public_transport" = ps: with ps; [  ];
+    "entur_public_transport.sensor" = ps: with ps; [  ];
+    "envirophat" = ps: with ps; [  ];
+    "envirophat.sensor" = ps: with ps; [  ];
     "envisalink" = ps: with ps; [  ];
     "envisalink.alarm_control_panel" = ps: with ps; [  ];
     "envisalink.binary_sensor" = ps: with ps; [  ];
     "envisalink.sensor" = ps: with ps; [  ];
+    "ephember" = ps: with ps; [  ];
+    "ephember.climate" = ps: with ps; [  ];
+    "epson" = ps: with ps; [  ];
+    "epson.media_player" = ps: with ps; [  ];
+    "eq3btsmart" = ps: with ps; [  ];
+    "eq3btsmart.climate" = ps: with ps; [ construct ];
     "esphome" = ps: with ps; [ aioesphomeapi ];
-    "esphome.binary_sensor" = ps: with ps; [  ];
+    "esphome.binary_sensor" = ps: with ps; [ aioesphomeapi ];
+    "esphome.camera" = ps: with ps; [ aioesphomeapi ];
     "esphome.config_flow" = ps: with ps; [  ];
-    "esphome.cover" = ps: with ps; [  ];
-    "esphome.fan" = ps: with ps; [  ];
-    "esphome.light" = ps: with ps; [  ];
-    "esphome.sensor" = ps: with ps; [  ];
-    "esphome.switch" = ps: with ps; [  ];
+    "esphome.cover" = ps: with ps; [ aioesphomeapi ];
+    "esphome.fan" = ps: with ps; [ aioesphomeapi ];
+    "esphome.light" = ps: with ps; [ aioesphomeapi ];
+    "esphome.sensor" = ps: with ps; [ aioesphomeapi ];
+    "esphome.switch" = ps: with ps; [ aioesphomeapi ];
+    "etherscan" = ps: with ps; [  ];
+    "etherscan.sensor" = ps: with ps; [  ];
     "eufy" = ps: with ps; [  ];
     "eufy.light" = ps: with ps; [  ];
     "eufy.switch" = ps: with ps; [  ];
+    "everlights" = ps: with ps; [  ];
+    "everlights.light" = ps: with ps; [  ];
     "evohome" = ps: with ps; [  ];
     "evohome.climate" = ps: with ps; [  ];
+    "facebook" = ps: with ps; [  ];
+    "facebook.notify" = ps: with ps; [  ];
+    "facebox" = ps: with ps; [  ];
+    "facebox.image_processing" = ps: with ps; [  ];
+    "fail2ban" = ps: with ps; [  ];
+    "fail2ban.sensor" = ps: with ps; [  ];
+    "familyhub" = ps: with ps; [  ];
+    "familyhub.camera" = ps: with ps; [  ];
     "fan" = ps: with ps; [  ];
-    "fan.demo" = ps: with ps; [  ];
-    "fan.dyson" = ps: with ps; [  ];
-    "fan.template" = ps: with ps; [  ];
     "fastdotcom" = ps: with ps; [  ];
     "fastdotcom.sensor" = ps: with ps; [  ];
+    "fedex" = ps: with ps; [  ];
+    "fedex.sensor" = ps: with ps; [  ];
     "feedreader" = ps: with ps; [  ];
     "ffmpeg" = ps: with ps; [ ha-ffmpeg ];
+    "ffmpeg.camera" = ps: with ps; [ ha-ffmpeg ];
+    "ffmpeg_motion" = ps: with ps; [  ];
+    "ffmpeg_motion.binary_sensor" = ps: with ps; [ ha-ffmpeg ];
+    "ffmpeg_noise" = ps: with ps; [  ];
+    "ffmpeg_noise.binary_sensor" = ps: with ps; [ ha-ffmpeg ];
     "fibaro" = ps: with ps; [  ];
     "fibaro.binary_sensor" = ps: with ps; [  ];
     "fibaro.cover" = ps: with ps; [  ];
@@ -415,30 +556,100 @@
     "fibaro.scene" = ps: with ps; [  ];
     "fibaro.sensor" = ps: with ps; [  ];
     "fibaro.switch" = ps: with ps; [  ];
+    "fido" = ps: with ps; [  ];
+    "fido.sensor" = ps: with ps; [  ];
+    "file" = ps: with ps; [  ];
+    "file.notify" = ps: with ps; [  ];
+    "file.sensor" = ps: with ps; [  ];
+    "filesize" = ps: with ps; [  ];
+    "filesize.sensor" = ps: with ps; [  ];
+    "filter" = ps: with ps; [  ];
+    "filter.sensor" = ps: with ps; [  ];
+    "fints" = ps: with ps; [  ];
+    "fints.sensor" = ps: with ps; [ fints ];
+    "fitbit" = ps: with ps; [  ];
+    "fitbit.sensor" = ps: with ps; [ aiohttp-cors ];
+    "fixer" = ps: with ps; [  ];
+    "fixer.sensor" = ps: with ps; [  ];
+    "flexit" = ps: with ps; [  ];
+    "flexit.climate" = ps: with ps; [  ];
+    "flic" = ps: with ps; [  ];
+    "flic.binary_sensor" = ps: with ps; [  ];
+    "flock" = ps: with ps; [  ];
+    "flock.notify" = ps: with ps; [  ];
+    "flunearyou" = ps: with ps; [  ];
+    "flunearyou.sensor" = ps: with ps; [  ];
+    "flux" = ps: with ps; [  ];
+    "flux.switch" = ps: with ps; [  ];
+    "flux_led" = ps: with ps; [  ];
+    "flux_led.light" = ps: with ps; [  ];
+    "folder" = ps: with ps; [  ];
+    "folder.sensor" = ps: with ps; [  ];
     "folder_watcher" = ps: with ps; [ watchdog ];
+    "foobot" = ps: with ps; [  ];
+    "foobot.sensor" = ps: with ps; [  ];
+    "foscam" = ps: with ps; [  ];
+    "foscam.camera" = ps: with ps; [  ];
     "foursquare" = ps: with ps; [ aiohttp-cors ];
+    "free_mobile" = ps: with ps; [  ];
+    "free_mobile.notify" = ps: with ps; [  ];
     "freebox" = ps: with ps; [  ];
     "freebox.device_tracker" = ps: with ps; [  ];
     "freebox.sensor" = ps: with ps; [  ];
+    "freebox.switch" = ps: with ps; [  ];
     "freedns" = ps: with ps; [  ];
+    "fritz" = ps: with ps; [  ];
+    "fritz.device_tracker" = ps: with ps; [ fritzconnection ];
     "fritzbox" = ps: with ps; [  ];
     "fritzbox.binary_sensor" = ps: with ps; [  ];
     "fritzbox.climate" = ps: with ps; [  ];
     "fritzbox.sensor" = ps: with ps; [  ];
     "fritzbox.switch" = ps: with ps; [  ];
+    "fritzbox_callmonitor" = ps: with ps; [  ];
+    "fritzbox_callmonitor.sensor" = ps: with ps; [ fritzconnection ];
+    "fritzbox_netmonitor" = ps: with ps; [  ];
+    "fritzbox_netmonitor.sensor" = ps: with ps; [ fritzconnection ];
+    "fritzdect" = ps: with ps; [  ];
+    "fritzdect.switch" = ps: with ps; [  ];
     "frontend" = ps: with ps; [ aiohttp-cors ];
     "frontend.storage" = ps: with ps; [  ];
+    "frontier_silicon" = ps: with ps; [  ];
+    "frontier_silicon.media_player" = ps: with ps; [  ];
+    "futurenow" = ps: with ps; [  ];
+    "futurenow.light" = ps: with ps; [  ];
+    "garadget" = ps: with ps; [  ];
+    "garadget.cover" = ps: with ps; [  ];
     "gc100" = ps: with ps; [  ];
     "gc100.binary_sensor" = ps: with ps; [  ];
     "gc100.switch" = ps: with ps; [  ];
+    "gearbest" = ps: with ps; [  ];
+    "gearbest.sensor" = ps: with ps; [  ];
+    "geizhals" = ps: with ps; [  ];
+    "geizhals.sensor" = ps: with ps; [  ];
+    "generic" = ps: with ps; [  ];
+    "generic.camera" = ps: with ps; [  ];
+    "generic_thermostat" = ps: with ps; [  ];
+    "generic_thermostat.climate" = ps: with ps; [  ];
+    "geo_json_events" = ps: with ps; [  ];
+    "geo_json_events.geo_location" = ps: with ps; [  ];
     "geo_location" = ps: with ps; [  ];
-    "geo_location.demo" = ps: with ps; [  ];
-    "geo_location.geo_json_events" = ps: with ps; [  ];
-    "geo_location.nsw_rural_fire_service_feed" = ps: with ps; [  ];
-    "geo_location.usgs_earthquakes_feed" = ps: with ps; [  ];
+    "geo_rss_events" = ps: with ps; [  ];
+    "geo_rss_events.sensor" = ps: with ps; [  ];
     "geofency" = ps: with ps; [ aiohttp-cors ];
     "geofency.device_tracker" = ps: with ps; [ aiohttp-cors ];
+    "github" = ps: with ps; [  ];
+    "github.sensor" = ps: with ps; [ PyGithub ];
+    "gitlab_ci" = ps: with ps; [  ];
+    "gitlab_ci.sensor" = ps: with ps; [ python-gitlab ];
+    "gitter" = ps: with ps; [  ];
+    "gitter.sensor" = ps: with ps; [  ];
+    "glances" = ps: with ps; [  ];
+    "glances.sensor" = ps: with ps; [  ];
+    "gntp" = ps: with ps; [  ];
+    "gntp.notify" = ps: with ps; [  ];
     "goalfeed" = ps: with ps; [  ];
+    "gogogate2" = ps: with ps; [  ];
+    "gogogate2.cover" = ps: with ps; [  ];
     "google" = ps: with ps; [ google_api_python_client httplib2 oauth2client ];
     "google.calendar" = ps: with ps; [  ];
     "google.tts" = ps: with ps; [  ];
@@ -449,16 +660,38 @@
     "google_assistant.smart_home" = ps: with ps; [  ];
     "google_assistant.trait" = ps: with ps; [  ];
     "google_domains" = ps: with ps; [  ];
+    "google_maps" = ps: with ps; [  ];
+    "google_maps.device_tracker" = ps: with ps; [  ];
     "google_pubsub" = ps: with ps; [ google_cloud_pubsub ];
+    "google_travel_time" = ps: with ps; [  ];
+    "google_travel_time.sensor" = ps: with ps; [  ];
+    "google_wifi" = ps: with ps; [  ];
+    "google_wifi.sensor" = ps: with ps; [  ];
     "googlehome" = ps: with ps; [  ];
     "googlehome.device_tracker" = ps: with ps; [  ];
     "googlehome.sensor" = ps: with ps; [  ];
+    "gpmdp" = ps: with ps; [  ];
+    "gpmdp.media_player" = ps: with ps; [ websocket_client ];
+    "gpsd" = ps: with ps; [  ];
+    "gpsd.sensor" = ps: with ps; [  ];
     "gpslogger" = ps: with ps; [ aiohttp-cors ];
     "gpslogger.device_tracker" = ps: with ps; [ aiohttp-cors ];
     "graphite" = ps: with ps; [  ];
     "greeneye_monitor" = ps: with ps; [  ];
+    "greeneye_monitor.sensor" = ps: with ps; [  ];
+    "greenwave" = ps: with ps; [  ];
+    "greenwave.light" = ps: with ps; [  ];
     "group" = ps: with ps; [  ];
+    "group.cover" = ps: with ps; [  ];
+    "group.light" = ps: with ps; [  ];
+    "group.notify" = ps: with ps; [  ];
     "group.reproduce_state" = ps: with ps; [  ];
+    "gstreamer" = ps: with ps; [  ];
+    "gstreamer.media_player" = ps: with ps; [  ];
+    "gtfs" = ps: with ps; [  ];
+    "gtfs.sensor" = ps: with ps; [  ];
+    "gtt" = ps: with ps; [  ];
+    "gtt.sensor" = ps: with ps; [  ];
     "habitica" = ps: with ps; [  ];
     "habitica.sensor" = ps: with ps; [  ];
     "hangouts" = ps: with ps; [  ];
@@ -467,6 +700,8 @@
     "hangouts.hangouts_bot" = ps: with ps; [  ];
     "hangouts.intents" = ps: with ps; [  ];
     "hangouts.notify" = ps: with ps; [  ];
+    "harman_kardon_avr" = ps: with ps; [  ];
+    "harman_kardon_avr.media_player" = ps: with ps; [  ];
     "harmony" = ps: with ps; [  ];
     "harmony.remote" = ps: with ps; [  ];
     "hassio" = ps: with ps; [ aiohttp-cors ];
@@ -475,11 +710,28 @@
     "hassio.discovery" = ps: with ps; [  ];
     "hassio.handler" = ps: with ps; [  ];
     "hassio.http" = ps: with ps; [  ];
+    "hassio.ingress" = ps: with ps; [  ];
+    "haveibeenpwned" = ps: with ps; [  ];
+    "haveibeenpwned.sensor" = ps: with ps; [  ];
+    "hddtemp" = ps: with ps; [  ];
+    "hddtemp.sensor" = ps: with ps; [  ];
     "hdmi_cec" = ps: with ps; [  ];
     "hdmi_cec.media_player" = ps: with ps; [  ];
     "hdmi_cec.switch" = ps: with ps; [  ];
+    "heatmiser" = ps: with ps; [  ];
+    "heatmiser.climate" = ps: with ps; [  ];
+    "hikvision" = ps: with ps; [  ];
+    "hikvision.binary_sensor" = ps: with ps; [  ];
+    "hikvisioncam" = ps: with ps; [  ];
+    "hikvisioncam.switch" = ps: with ps; [  ];
+    "hipchat" = ps: with ps; [  ];
+    "hipchat.notify" = ps: with ps; [  ];
     "history" = ps: with ps; [ aiohttp-cors sqlalchemy ];
     "history_graph" = ps: with ps; [ aiohttp-cors sqlalchemy ];
+    "history_stats" = ps: with ps; [  ];
+    "history_stats.sensor" = ps: with ps; [ aiohttp-cors sqlalchemy ];
+    "hitron_coda" = ps: with ps; [  ];
+    "hitron_coda.device_tracker" = ps: with ps; [  ];
     "hive" = ps: with ps; [  ];
     "hive.binary_sensor" = ps: with ps; [  ];
     "hive.climate" = ps: with ps; [  ];
@@ -488,6 +740,8 @@
     "hive.switch" = ps: with ps; [  ];
     "hlk_sw16" = ps: with ps; [  ];
     "hlk_sw16.switch" = ps: with ps; [  ];
+    "homeassistant" = ps: with ps; [  ];
+    "homeassistant.scene" = ps: with ps; [  ];
     "homekit" = ps: with ps; [  ];
     "homekit.const" = ps: with ps; [  ];
     "homekit.util" = ps: with ps; [  ];
@@ -528,6 +782,16 @@
     "homematicip_cloud.weather" = ps: with ps; [  ];
     "homeworks" = ps: with ps; [  ];
     "homeworks.light" = ps: with ps; [  ];
+    "honeywell" = ps: with ps; [  ];
+    "honeywell.climate" = ps: with ps; [  ];
+    "hook" = ps: with ps; [  ];
+    "hook.switch" = ps: with ps; [  ];
+    "horizon" = ps: with ps; [  ];
+    "horizon.media_player" = ps: with ps; [  ];
+    "hp_ilo" = ps: with ps; [  ];
+    "hp_ilo.sensor" = ps: with ps; [  ];
+    "html5" = ps: with ps; [  ];
+    "html5.notify" = ps: with ps; [ aiohttp-cors ];
     "http" = ps: with ps; [ aiohttp-cors ];
     "http.auth" = ps: with ps; [  ];
     "http.ban" = ps: with ps; [  ];
@@ -537,23 +801,39 @@
     "http.real_ip" = ps: with ps; [  ];
     "http.static" = ps: with ps; [  ];
     "http.view" = ps: with ps; [  ];
+    "htu21d" = ps: with ps; [  ];
+    "htu21d.sensor" = ps: with ps; [  ];
     "huawei_lte" = ps: with ps; [  ];
     "huawei_lte.device_tracker" = ps: with ps; [  ];
     "huawei_lte.notify" = ps: with ps; [  ];
     "huawei_lte.sensor" = ps: with ps; [  ];
+    "huawei_router" = ps: with ps; [  ];
+    "huawei_router.device_tracker" = ps: with ps; [  ];
     "hue" = ps: with ps; [ aiohue ];
     "hue.bridge" = ps: with ps; [  ];
     "hue.config_flow" = ps: with ps; [  ];
     "hue.const" = ps: with ps; [  ];
     "hue.errors" = ps: with ps; [  ];
     "hue.light" = ps: with ps; [ aiohue ];
+    "hunterdouglas_powerview" = ps: with ps; [  ];
+    "hunterdouglas_powerview.scene" = ps: with ps; [  ];
     "hydrawise" = ps: with ps; [  ];
     "hydrawise.binary_sensor" = ps: with ps; [  ];
     "hydrawise.sensor" = ps: with ps; [  ];
     "hydrawise.switch" = ps: with ps; [  ];
+    "hydroquebec" = ps: with ps; [  ];
+    "hydroquebec.sensor" = ps: with ps; [  ];
+    "hyperion" = ps: with ps; [  ];
+    "hyperion.light" = ps: with ps; [  ];
+    "ialarm" = ps: with ps; [  ];
+    "ialarm.alarm_control_panel" = ps: with ps; [  ];
+    "icloud" = ps: with ps; [  ];
+    "icloud.device_tracker" = ps: with ps; [  ];
     "idteck_prox" = ps: with ps; [  ];
     "ifttt" = ps: with ps; [ aiohttp-cors pyfttt ];
     "ifttt.alarm_control_panel" = ps: with ps; [ aiohttp-cors pyfttt ];
+    "iglo" = ps: with ps; [  ];
+    "iglo.light" = ps: with ps; [  ];
     "ihc" = ps: with ps; [ defusedxml ];
     "ihc.binary_sensor" = ps: with ps; [ defusedxml ];
     "ihc.const" = ps: with ps; [  ];
@@ -563,19 +843,12 @@
     "ihc.switch" = ps: with ps; [ defusedxml ];
     "ihc.util" = ps: with ps; [  ];
     "image_processing" = ps: with ps; [ aiohttp-cors ];
-    "image_processing.demo" = ps: with ps; [  ];
-    "image_processing.dlib_face_detect" = ps: with ps; [ face_recognition ];
-    "image_processing.dlib_face_identify" = ps: with ps; [ face_recognition ];
-    "image_processing.facebox" = ps: with ps; [  ];
-    "image_processing.microsoft_face_detect" = ps: with ps; [ aiohttp-cors ];
-    "image_processing.microsoft_face_identify" = ps: with ps; [ aiohttp-cors ];
-    "image_processing.openalpr_cloud" = ps: with ps; [  ];
-    "image_processing.openalpr_local" = ps: with ps; [  ];
-    "image_processing.opencv" = ps: with ps; [ numpy ];
-    "image_processing.qrcode" = ps: with ps; [ pillow ];
-    "image_processing.seven_segments" = ps: with ps; [  ];
-    "image_processing.tensorflow" = ps: with ps; [ numpy pillow protobuf ];
+    "imap" = ps: with ps; [  ];
+    "imap.sensor" = ps: with ps; [  ];
+    "imap_email_content" = ps: with ps; [  ];
+    "imap_email_content.sensor" = ps: with ps; [  ];
     "influxdb" = ps: with ps; [ influxdb ];
+    "influxdb.sensor" = ps: with ps; [ influxdb ];
     "input_boolean" = ps: with ps; [  ];
     "input_datetime" = ps: with ps; [  ];
     "input_number" = ps: with ps; [  ];
@@ -590,6 +863,8 @@
     "insteon.switch" = ps: with ps; [  ];
     "insteon_local" = ps: with ps; [  ];
     "insteon_plm" = ps: with ps; [  ];
+    "integration" = ps: with ps; [  ];
+    "integration.sensor" = ps: with ps; [  ];
     "intent_script" = ps: with ps; [  ];
     "introduction" = ps: with ps; [  ];
     "ios" = ps: with ps; [ aiohttp-cors zeroconf ];
@@ -603,6 +878,12 @@
     "ipma.config_flow" = ps: with ps; [  ];
     "ipma.const" = ps: with ps; [  ];
     "ipma.weather" = ps: with ps; [  ];
+    "irish_rail_transport" = ps: with ps; [  ];
+    "irish_rail_transport.sensor" = ps: with ps; [  ];
+    "islamic_prayer_times" = ps: with ps; [  ];
+    "islamic_prayer_times.sensor" = ps: with ps; [  ];
+    "iss" = ps: with ps; [  ];
+    "iss.binary_sensor" = ps: with ps; [  ];
     "isy994" = ps: with ps; [  ];
     "isy994.binary_sensor" = ps: with ps; [  ];
     "isy994.cover" = ps: with ps; [  ];
@@ -613,15 +894,25 @@
     "isy994.switch" = ps: with ps; [  ];
     "itach" = ps: with ps; [  ];
     "itach.remote" = ps: with ps; [  ];
+    "itunes" = ps: with ps; [  ];
+    "itunes.media_player" = ps: with ps; [  ];
+    "jewish_calendar" = ps: with ps; [  ];
+    "jewish_calendar.sensor" = ps: with ps; [  ];
     "joaoapps_join" = ps: with ps; [  ];
     "joaoapps_join.notify" = ps: with ps; [  ];
     "juicenet" = ps: with ps; [  ];
     "juicenet.sensor" = ps: with ps; [  ];
+    "kankun" = ps: with ps; [  ];
+    "kankun.switch" = ps: with ps; [  ];
+    "keenetic_ndms2" = ps: with ps; [  ];
+    "keenetic_ndms2.device_tracker" = ps: with ps; [  ];
     "keyboard" = ps: with ps; [  ];
     "keyboard_remote" = ps: with ps; [ evdev ];
     "kira" = ps: with ps; [  ];
     "kira.remote" = ps: with ps; [  ];
     "kira.sensor" = ps: with ps; [  ];
+    "kiwi" = ps: with ps; [  ];
+    "kiwi.lock" = ps: with ps; [  ];
     "knx" = ps: with ps; [  ];
     "knx.binary_sensor" = ps: with ps; [  ];
     "knx.climate" = ps: with ps; [  ];
@@ -631,80 +922,91 @@
     "knx.scene" = ps: with ps; [  ];
     "knx.sensor" = ps: with ps; [  ];
     "knx.switch" = ps: with ps; [  ];
+    "kodi" = ps: with ps; [  ];
+    "kodi.media_player" = ps: with ps; [ jsonrpc-async jsonrpc-websocket ];
+    "kodi.notify" = ps: with ps; [ jsonrpc-async ];
     "konnected" = ps: with ps; [ aiohttp-cors ];
     "konnected.binary_sensor" = ps: with ps; [ aiohttp-cors ];
     "konnected.const" = ps: with ps; [  ];
     "konnected.handlers" = ps: with ps; [  ];
     "konnected.sensor" = ps: with ps; [ aiohttp-cors ];
     "konnected.switch" = ps: with ps; [ aiohttp-cors ];
+    "kwb" = ps: with ps; [  ];
+    "kwb.sensor" = ps: with ps; [  ];
+    "lacrosse" = ps: with ps; [  ];
+    "lacrosse.sensor" = ps: with ps; [  ];
     "lametric" = ps: with ps; [  ];
     "lametric.notify" = ps: with ps; [  ];
+    "lannouncer" = ps: with ps; [  ];
+    "lannouncer.notify" = ps: with ps; [  ];
+    "lastfm" = ps: with ps; [  ];
+    "lastfm.sensor" = ps: with ps; [ pylast ];
+    "launch_library" = ps: with ps; [  ];
+    "launch_library.sensor" = ps: with ps; [  ];
     "lcn" = ps: with ps; [  ];
     "lcn.const" = ps: with ps; [  ];
     "lcn.cover" = ps: with ps; [  ];
     "lcn.light" = ps: with ps; [  ];
+    "lcn.sensor" = ps: with ps; [  ];
     "lcn.switch" = ps: with ps; [  ];
+    "lg_netcast" = ps: with ps; [  ];
+    "lg_netcast.media_player" = ps: with ps; [  ];
+    "lg_soundbar" = ps: with ps; [  ];
+    "lg_soundbar.media_player" = ps: with ps; [  ];
     "lifx" = ps: with ps; [ aiolifx ];
     "lifx.light" = ps: with ps; [ aiolifx aiolifx-effects ];
+    "lifx_cloud" = ps: with ps; [  ];
+    "lifx_cloud.scene" = ps: with ps; [  ];
+    "lifx_legacy" = ps: with ps; [  ];
+    "lifx_legacy.light" = ps: with ps; [  ];
     "light" = ps: with ps; [  ];
-    "light.avion" = ps: with ps; [  ];
-    "light.blinksticklight" = ps: with ps; [ BlinkStick ];
-    "light.blinkt" = ps: with ps; [  ];
-    "light.decora" = ps: with ps; [  ];
-    "light.decora_wifi" = ps: with ps; [  ];
-    "light.demo" = ps: with ps; [  ];
-    "light.everlights" = ps: with ps; [  ];
-    "light.flux_led" = ps: with ps; [  ];
-    "light.futurenow" = ps: with ps; [  ];
-    "light.greenwave" = ps: with ps; [  ];
-    "light.group" = ps: with ps; [  ];
-    "light.hyperion" = ps: with ps; [  ];
-    "light.iglo" = ps: with ps; [  ];
-    "light.lifx_legacy" = ps: with ps; [  ];
-    "light.limitlessled" = ps: with ps; [ limitlessled ];
-    "light.litejet" = ps: with ps; [  ];
-    "light.lw12wifi" = ps: with ps; [  ];
-    "light.mystrom" = ps: with ps; [  ];
-    "light.nanoleaf" = ps: with ps; [  ];
-    "light.niko_home_control" = ps: with ps; [  ];
-    "light.opple" = ps: with ps; [  ];
-    "light.osramlightify" = ps: with ps; [  ];
-    "light.piglow" = ps: with ps; [  ];
-    "light.rflink" = ps: with ps; [  ];
-    "light.rpi_gpio_pwm" = ps: with ps; [  ];
-    "light.sensehat" = ps: with ps; [  ];
-    "light.switch" = ps: with ps; [  ];
-    "light.template" = ps: with ps; [  ];
-    "light.tikteck" = ps: with ps; [  ];
-    "light.x10" = ps: with ps; [  ];
-    "light.yeelight" = ps: with ps; [  ];
-    "light.yeelightsunflower" = ps: with ps; [  ];
-    "light.zengge" = ps: with ps; [  ];
     "lightwave" = ps: with ps; [  ];
     "lightwave.light" = ps: with ps; [  ];
     "lightwave.switch" = ps: with ps; [  ];
+    "limitlessled" = ps: with ps; [  ];
+    "limitlessled.light" = ps: with ps; [ limitlessled ];
+    "linksys_ap" = ps: with ps; [  ];
+    "linksys_ap.device_tracker" = ps: with ps; [ beautifulsoup4 ];
+    "linksys_smart" = ps: with ps; [  ];
+    "linksys_smart.device_tracker" = ps: with ps; [  ];
+    "linky" = ps: with ps; [  ];
+    "linky.sensor" = ps: with ps; [  ];
     "linode" = ps: with ps; [ linode-api ];
     "linode.binary_sensor" = ps: with ps; [ linode-api ];
     "linode.switch" = ps: with ps; [ linode-api ];
+    "linux_battery" = ps: with ps; [  ];
+    "linux_battery.sensor" = ps: with ps; [ batinfo ];
     "lirc" = ps: with ps; [  ];
     "litejet" = ps: with ps; [  ];
+    "litejet.light" = ps: with ps; [  ];
+    "litejet.scene" = ps: with ps; [  ];
+    "litejet.switch" = ps: with ps; [  ];
+    "liveboxplaytv" = ps: with ps; [  ];
+    "liveboxplaytv.media_player" = ps: with ps; [  ];
+    "llamalab_automate" = ps: with ps; [  ];
+    "llamalab_automate.notify" = ps: with ps; [  ];
+    "local_file" = ps: with ps; [  ];
+    "local_file.camera" = ps: with ps; [  ];
     "locative" = ps: with ps; [ aiohttp-cors ];
     "locative.device_tracker" = ps: with ps; [ aiohttp-cors ];
     "lock" = ps: with ps; [  ];
-    "lock.demo" = ps: with ps; [  ];
-    "lock.kiwi" = ps: with ps; [  ];
-    "lock.lockitron" = ps: with ps; [  ];
-    "lock.nello" = ps: with ps; [  ];
-    "lock.nuki" = ps: with ps; [  ];
-    "lock.sesame" = ps: with ps; [  ];
-    "lock.template" = ps: with ps; [  ];
+    "lockitron" = ps: with ps; [  ];
+    "lockitron.lock" = ps: with ps; [  ];
     "logbook" = ps: with ps; [ aiohttp-cors sqlalchemy ];
     "logentries" = ps: with ps; [  ];
     "logger" = ps: with ps; [  ];
     "logi_circle" = ps: with ps; [  ];
     "logi_circle.camera" = ps: with ps; [  ];
     "logi_circle.sensor" = ps: with ps; [  ];
+    "london_air" = ps: with ps; [  ];
+    "london_air.sensor" = ps: with ps; [  ];
+    "london_underground" = ps: with ps; [  ];
+    "london_underground.sensor" = ps: with ps; [  ];
+    "loopenergy" = ps: with ps; [  ];
+    "loopenergy.sensor" = ps: with ps; [  ];
     "lovelace" = ps: with ps; [  ];
+    "luci" = ps: with ps; [  ];
+    "luci.device_tracker" = ps: with ps; [  ];
     "luftdaten" = ps: with ps; [ luftdaten ];
     "luftdaten.config_flow" = ps: with ps; [  ];
     "luftdaten.const" = ps: with ps; [  ];
@@ -723,12 +1025,24 @@
     "lutron_caseta.light" = ps: with ps; [  ];
     "lutron_caseta.scene" = ps: with ps; [  ];
     "lutron_caseta.switch" = ps: with ps; [  ];
+    "lw12wifi" = ps: with ps; [  ];
+    "lw12wifi.light" = ps: with ps; [  ];
+    "lyft" = ps: with ps; [  ];
+    "lyft.sensor" = ps: with ps; [  ];
+    "magicseaweed" = ps: with ps; [  ];
+    "magicseaweed.sensor" = ps: with ps; [  ];
     "mailbox" = ps: with ps; [ aiohttp-cors ];
-    "mailbox.asterisk_cdr" = ps: with ps; [  ];
-    "mailbox.demo" = ps: with ps; [  ];
     "mailgun" = ps: with ps; [ aiohttp-cors ];
     "mailgun.notify" = ps: with ps; [ aiohttp-cors ];
+    "manual" = ps: with ps; [  ];
+    "manual.alarm_control_panel" = ps: with ps; [  ];
+    "manual_mqtt" = ps: with ps; [  ];
+    "manual_mqtt.alarm_control_panel" = ps: with ps; [ paho-mqtt ];
     "map" = ps: with ps; [  ];
+    "marytts" = ps: with ps; [  ];
+    "marytts.tts" = ps: with ps; [  ];
+    "mastodon" = ps: with ps; [  ];
+    "mastodon.notify" = ps: with ps; [  ];
     "matrix" = ps: with ps; [ matrix-client ];
     "matrix.notify" = ps: with ps; [ matrix-client ];
     "maxcube" = ps: with ps; [  ];
@@ -736,76 +1050,55 @@
     "maxcube.climate" = ps: with ps; [  ];
     "media_extractor" = ps: with ps; [ aiohttp-cors youtube-dl-light ];
     "media_player" = ps: with ps; [ aiohttp-cors ];
-    "media_player.anthemav" = ps: with ps; [  ];
-    "media_player.aquostv" = ps: with ps; [  ];
-    "media_player.blackbird" = ps: with ps; [  ];
-    "media_player.bluesound" = ps: with ps; [ xmltodict ];
-    "media_player.braviatv" = ps: with ps; [  ];
-    "media_player.channels" = ps: with ps; [  ];
-    "media_player.clementine" = ps: with ps; [  ];
-    "media_player.cmus" = ps: with ps; [  ];
     "media_player.const" = ps: with ps; [  ];
-    "media_player.demo" = ps: with ps; [  ];
-    "media_player.denon" = ps: with ps; [  ];
-    "media_player.denonavr" = ps: with ps; [  ];
-    "media_player.directv" = ps: with ps; [  ];
-    "media_player.dlna_dmr" = ps: with ps; [  ];
-    "media_player.dunehd" = ps: with ps; [  ];
-    "media_player.emby" = ps: with ps; [  ];
-    "media_player.epson" = ps: with ps; [  ];
-    "media_player.frontier_silicon" = ps: with ps; [  ];
-    "media_player.gpmdp" = ps: with ps; [ websocket_client ];
-    "media_player.gstreamer" = ps: with ps; [  ];
-    "media_player.harman_kardon_avr" = ps: with ps; [  ];
-    "media_player.horizon" = ps: with ps; [  ];
-    "media_player.itunes" = ps: with ps; [  ];
-    "media_player.kodi" = ps: with ps; [ jsonrpc-async jsonrpc-websocket ];
-    "media_player.lg_netcast" = ps: with ps; [  ];
-    "media_player.lg_soundbar" = ps: with ps; [  ];
-    "media_player.liveboxplaytv" = ps: with ps; [  ];
-    "media_player.mediaroom" = ps: with ps; [  ];
-    "media_player.monoprice" = ps: with ps; [  ];
-    "media_player.mpchc" = ps: with ps; [  ];
-    "media_player.mpd" = ps: with ps; [ mpd2 ];
-    "media_player.nad" = ps: with ps; [  ];
-    "media_player.onkyo" = ps: with ps; [ onkyo-eiscp ];
-    "media_player.openhome" = ps: with ps; [  ];
-    "media_player.panasonic_bluray" = ps: with ps; [  ];
-    "media_player.panasonic_viera" = ps: with ps; [ wakeonlan ];
-    "media_player.pandora" = ps: with ps; [ pexpect ];
-    "media_player.philips_js" = ps: with ps; [  ];
-    "media_player.pioneer" = ps: with ps; [  ];
-    "media_player.pjlink" = ps: with ps; [  ];
-    "media_player.plex" = ps: with ps; [  ];
     "media_player.reproduce_state" = ps: with ps; [  ];
-    "media_player.russound_rio" = ps: with ps; [  ];
-    "media_player.russound_rnet" = ps: with ps; [  ];
-    "media_player.samsungtv" = ps: with ps; [ wakeonlan ];
-    "media_player.snapcast" = ps: with ps; [ snapcast ];
-    "media_player.songpal" = ps: with ps; [  ];
-    "media_player.soundtouch" = ps: with ps; [ libsoundtouch ];
-    "media_player.spotify" = ps: with ps; [ aiohttp-cors ];
-    "media_player.squeezebox" = ps: with ps; [  ];
-    "media_player.ue_smart_radio" = ps: with ps; [  ];
-    "media_player.universal" = ps: with ps; [  ];
-    "media_player.vizio" = ps: with ps; [  ];
-    "media_player.vlc" = ps: with ps; [  ];
-    "media_player.volumio" = ps: with ps; [  ];
-    "media_player.xiaomi_tv" = ps: with ps; [  ];
-    "media_player.yamaha" = ps: with ps; [  ];
-    "media_player.yamaha_musiccast" = ps: with ps; [  ];
-    "media_player.ziggo_mediabox_xl" = ps: with ps; [  ];
+    "mediaroom" = ps: with ps; [  ];
+    "mediaroom.media_player" = ps: with ps; [  ];
     "melissa" = ps: with ps; [  ];
+    "melissa.climate" = ps: with ps; [  ];
+    "meraki" = ps: with ps; [  ];
+    "meraki.device_tracker" = ps: with ps; [ aiohttp-cors ];
+    "message_bird" = ps: with ps; [  ];
+    "message_bird.notify" = ps: with ps; [  ];
+    "met" = ps: with ps; [  ];
+    "met.weather" = ps: with ps; [  ];
     "meteo_france" = ps: with ps; [  ];
     "meteo_france.sensor" = ps: with ps; [  ];
     "meteo_france.weather" = ps: with ps; [  ];
+    "metoffice" = ps: with ps; [  ];
+    "metoffice.sensor" = ps: with ps; [  ];
+    "metoffice.weather" = ps: with ps; [  ];
+    "mfi" = ps: with ps; [  ];
+    "mfi.sensor" = ps: with ps; [  ];
+    "mfi.switch" = ps: with ps; [  ];
+    "mhz19" = ps: with ps; [  ];
+    "mhz19.sensor" = ps: with ps; [  ];
+    "microsoft" = ps: with ps; [  ];
+    "microsoft.tts" = ps: with ps; [  ];
     "microsoft_face" = ps: with ps; [ aiohttp-cors ];
+    "microsoft_face_detect" = ps: with ps; [  ];
+    "microsoft_face_detect.image_processing" = ps: with ps; [ aiohttp-cors ];
+    "microsoft_face_identify" = ps: with ps; [  ];
+    "microsoft_face_identify.image_processing" = ps: with ps; [ aiohttp-cors ];
+    "miflora" = ps: with ps; [  ];
+    "miflora.sensor" = ps: with ps; [  ];
+    "mikrotik" = ps: with ps; [  ];
+    "mikrotik.device_tracker" = ps: with ps; [  ];
+    "mill" = ps: with ps; [  ];
+    "mill.climate" = ps: with ps; [  ];
+    "min_max" = ps: with ps; [  ];
+    "min_max.sensor" = ps: with ps; [  ];
+    "mitemp_bt" = ps: with ps; [  ];
+    "mitemp_bt.sensor" = ps: with ps; [  ];
+    "mjpeg" = ps: with ps; [  ];
+    "mjpeg.camera" = ps: with ps; [  ];
     "mobile_app" = ps: with ps; [ pynacl aiohttp-cors ];
     "mobile_app.binary_sensor" = ps: with ps; [ pynacl aiohttp-cors ];
     "mobile_app.const" = ps: with ps; [  ];
     "mobile_app.entity" = ps: with ps; [  ];
     "mobile_app.helpers" = ps: with ps; [  ];
     "mobile_app.http_api" = ps: with ps; [  ];
+    "mobile_app.notify" = ps: with ps; [ pynacl aiohttp-cors ];
     "mobile_app.sensor" = ps: with ps; [ pynacl aiohttp-cors ];
     "mobile_app.webhook" = ps: with ps; [  ];
     "mobile_app.websocket_api" = ps: with ps; [  ];
@@ -817,6 +1110,22 @@
     "modbus.climate" = ps: with ps; [  ];
     "modbus.sensor" = ps: with ps; [  ];
     "modbus.switch" = ps: with ps; [  ];
+    "modem_callerid" = ps: with ps; [  ];
+    "modem_callerid.sensor" = ps: with ps; [  ];
+    "mold_indicator" = ps: with ps; [  ];
+    "mold_indicator.sensor" = ps: with ps; [  ];
+    "monoprice" = ps: with ps; [  ];
+    "monoprice.media_player" = ps: with ps; [  ];
+    "moon" = ps: with ps; [  ];
+    "moon.sensor" = ps: with ps; [  ];
+    "mopar" = ps: with ps; [  ];
+    "mopar.lock" = ps: with ps; [  ];
+    "mopar.sensor" = ps: with ps; [  ];
+    "mopar.switch" = ps: with ps; [  ];
+    "mpchc" = ps: with ps; [  ];
+    "mpchc.media_player" = ps: with ps; [  ];
+    "mpd" = ps: with ps; [  ];
+    "mpd.media_player" = ps: with ps; [ mpd2 ];
     "mqtt" = ps: with ps; [ paho-mqtt ];
     "mqtt.alarm_control_panel" = ps: with ps; [ paho-mqtt ];
     "mqtt.binary_sensor" = ps: with ps; [ paho-mqtt ];
@@ -836,11 +1145,20 @@
     "mqtt.switch" = ps: with ps; [ paho-mqtt ];
     "mqtt.vacuum" = ps: with ps; [ paho-mqtt ];
     "mqtt_eventstream" = ps: with ps; [ paho-mqtt ];
+    "mqtt_json" = ps: with ps; [  ];
+    "mqtt_json.device_tracker" = ps: with ps; [ paho-mqtt ];
+    "mqtt_room" = ps: with ps; [  ];
+    "mqtt_room.sensor" = ps: with ps; [ paho-mqtt ];
     "mqtt_statestream" = ps: with ps; [ paho-mqtt ];
+    "mvglive" = ps: with ps; [  ];
+    "mvglive.sensor" = ps: with ps; [ PyMVGLive ];
     "mychevy" = ps: with ps; [  ];
     "mychevy.binary_sensor" = ps: with ps; [  ];
     "mychevy.sensor" = ps: with ps; [  ];
     "mycroft" = ps: with ps; [  ];
+    "mycroft.notify" = ps: with ps; [  ];
+    "myq" = ps: with ps; [  ];
+    "myq.cover" = ps: with ps; [  ];
     "mysensors" = ps: with ps; [  ];
     "mysensors.binary_sensor" = ps: with ps; [  ];
     "mysensors.climate" = ps: with ps; [  ];
@@ -855,13 +1173,27 @@
     "mysensors.notify" = ps: with ps; [  ];
     "mysensors.sensor" = ps: with ps; [  ];
     "mysensors.switch" = ps: with ps; [  ];
+    "mystrom" = ps: with ps; [  ];
+    "mystrom.binary_sensor" = ps: with ps; [ aiohttp-cors ];
+    "mystrom.light" = ps: with ps; [  ];
+    "mystrom.switch" = ps: with ps; [  ];
     "mythicbeastsdns" = ps: with ps; [  ];
+    "nad" = ps: with ps; [  ];
+    "nad.media_player" = ps: with ps; [  ];
     "namecheapdns" = ps: with ps; [ defusedxml ];
+    "nanoleaf" = ps: with ps; [  ];
+    "nanoleaf.light" = ps: with ps; [  ];
     "neato" = ps: with ps; [ pybotvac ];
     "neato.camera" = ps: with ps; [ pybotvac ];
     "neato.switch" = ps: with ps; [ pybotvac ];
     "neato.vacuum" = ps: with ps; [ pybotvac ];
+    "nederlandse_spoorwegen" = ps: with ps; [  ];
+    "nederlandse_spoorwegen.sensor" = ps: with ps; [  ];
+    "nello" = ps: with ps; [  ];
+    "nello.lock" = ps: with ps; [  ];
     "ness_alarm" = ps: with ps; [  ];
+    "ness_alarm.alarm_control_panel" = ps: with ps; [  ];
+    "ness_alarm.binary_sensor" = ps: with ps; [  ];
     "nest" = ps: with ps; [  ];
     "nest.binary_sensor" = ps: with ps; [  ];
     "nest.camera" = ps: with ps; [  ];
@@ -875,70 +1207,93 @@
     "netatmo.camera" = ps: with ps; [ aiohttp-cors ];
     "netatmo.climate" = ps: with ps; [ aiohttp-cors ];
     "netatmo.sensor" = ps: with ps; [ aiohttp-cors ];
+    "netatmo_public" = ps: with ps; [  ];
+    "netatmo_public.sensor" = ps: with ps; [ aiohttp-cors ];
+    "netdata" = ps: with ps; [  ];
+    "netdata.sensor" = ps: with ps; [  ];
+    "netgear" = ps: with ps; [  ];
+    "netgear.device_tracker" = ps: with ps; [  ];
     "netgear_lte" = ps: with ps; [  ];
     "netgear_lte.notify" = ps: with ps; [  ];
     "netgear_lte.sensor" = ps: with ps; [  ];
+    "netgear_lte.sensor_types" = ps: with ps; [  ];
+    "netio" = ps: with ps; [  ];
+    "netio.switch" = ps: with ps; [ aiohttp-cors ];
+    "neurio_energy" = ps: with ps; [  ];
+    "neurio_energy.sensor" = ps: with ps; [  ];
+    "nfandroidtv" = ps: with ps; [  ];
+    "nfandroidtv.notify" = ps: with ps; [  ];
+    "niko_home_control" = ps: with ps; [  ];
+    "niko_home_control.light" = ps: with ps; [  ];
+    "nilu" = ps: with ps; [  ];
+    "nilu.air_quality" = ps: with ps; [  ];
     "nissan_leaf" = ps: with ps; [  ];
     "nissan_leaf.binary_sensor" = ps: with ps; [  ];
     "nissan_leaf.device_tracker" = ps: with ps; [  ];
     "nissan_leaf.sensor" = ps: with ps; [  ];
     "nissan_leaf.switch" = ps: with ps; [  ];
+    "nmap_tracker" = ps: with ps; [  ];
+    "nmap_tracker.device_tracker" = ps: with ps; [  ];
+    "nmbs" = ps: with ps; [  ];
+    "nmbs.sensor" = ps: with ps; [  ];
     "no_ip" = ps: with ps; [  ];
+    "noaa_tides" = ps: with ps; [  ];
+    "noaa_tides.sensor" = ps: with ps; [  ];
+    "norway_air" = ps: with ps; [  ];
+    "norway_air.air_quality" = ps: with ps; [  ];
     "notify" = ps: with ps; [  ];
-    "notify.apns" = ps: with ps; [  ];
-    "notify.aws_lambda" = ps: with ps; [ boto3 ];
-    "notify.aws_sns" = ps: with ps; [ boto3 ];
-    "notify.aws_sqs" = ps: with ps; [ boto3 ];
-    "notify.ciscospark" = ps: with ps; [  ];
-    "notify.clickatell" = ps: with ps; [  ];
-    "notify.clicksend" = ps: with ps; [  ];
-    "notify.clicksend_tts" = ps: with ps; [  ];
-    "notify.command_line" = ps: with ps; [  ];
-    "notify.demo" = ps: with ps; [  ];
-    "notify.discord" = ps: with ps; [ discordpy ];
-    "notify.facebook" = ps: with ps; [  ];
-    "notify.file" = ps: with ps; [  ];
-    "notify.flock" = ps: with ps; [  ];
-    "notify.free_mobile" = ps: with ps; [  ];
-    "notify.gntp" = ps: with ps; [  ];
-    "notify.group" = ps: with ps; [  ];
-    "notify.hipchat" = ps: with ps; [  ];
-    "notify.html5" = ps: with ps; [ aiohttp-cors ];
-    "notify.kodi" = ps: with ps; [ jsonrpc-async ];
-    "notify.lannouncer" = ps: with ps; [  ];
-    "notify.llamalab_automate" = ps: with ps; [  ];
-    "notify.mastodon" = ps: with ps; [  ];
-    "notify.message_bird" = ps: with ps; [  ];
-    "notify.mycroft" = ps: with ps; [  ];
-    "notify.nfandroidtv" = ps: with ps; [  ];
-    "notify.prowl" = ps: with ps; [  ];
-    "notify.pushbullet" = ps: with ps; [ pushbullet ];
-    "notify.pushetta" = ps: with ps; [  ];
-    "notify.pushover" = ps: with ps; [ python-pushover ];
-    "notify.pushsafer" = ps: with ps; [  ];
-    "notify.rest" = ps: with ps; [  ];
-    "notify.rocketchat" = ps: with ps; [  ];
-    "notify.sendgrid" = ps: with ps; [  ];
-    "notify.simplepush" = ps: with ps; [  ];
-    "notify.slack" = ps: with ps; [  ];
-    "notify.smtp" = ps: with ps; [  ];
-    "notify.stride" = ps: with ps; [  ];
-    "notify.synology_chat" = ps: with ps; [  ];
-    "notify.syslog" = ps: with ps; [  ];
-    "notify.telegram" = ps: with ps; [ python-telegram-bot ];
-    "notify.twilio_call" = ps: with ps; [ aiohttp-cors twilio ];
-    "notify.twilio_sms" = ps: with ps; [ aiohttp-cors twilio ];
-    "notify.twitter" = ps: with ps; [  ];
-    "notify.xmpp" = ps: with ps; [ slixmpp ];
-    "notify.yessssms" = ps: with ps; [  ];
+    "nsw_fuel_station" = ps: with ps; [  ];
+    "nsw_fuel_station.sensor" = ps: with ps; [  ];
+    "nsw_rural_fire_service_feed" = ps: with ps; [  ];
+    "nsw_rural_fire_service_feed.geo_location" = ps: with ps; [  ];
     "nuheat" = ps: with ps; [  ];
+    "nuheat.climate" = ps: with ps; [  ];
     "nuimo_controller" = ps: with ps; [  ];
+    "nuki" = ps: with ps; [  ];
+    "nuki.lock" = ps: with ps; [  ];
+    "nut" = ps: with ps; [  ];
+    "nut.sensor" = ps: with ps; [  ];
+    "nx584" = ps: with ps; [  ];
+    "nx584.alarm_control_panel" = ps: with ps; [  ];
+    "nx584.binary_sensor" = ps: with ps; [  ];
+    "nzbget" = ps: with ps; [  ];
+    "nzbget.sensor" = ps: with ps; [  ];
     "octoprint" = ps: with ps; [  ];
     "octoprint.binary_sensor" = ps: with ps; [  ];
     "octoprint.sensor" = ps: with ps; [  ];
+    "oem" = ps: with ps; [  ];
+    "oem.climate" = ps: with ps; [  ];
+    "ohmconnect" = ps: with ps; [  ];
+    "ohmconnect.sensor" = ps: with ps; [ defusedxml ];
     "onboarding" = ps: with ps; [ aiohttp-cors ];
     "onboarding.const" = ps: with ps; [  ];
     "onboarding.views" = ps: with ps; [  ];
+    "onewire" = ps: with ps; [  ];
+    "onewire.sensor" = ps: with ps; [  ];
+    "onkyo" = ps: with ps; [  ];
+    "onkyo.media_player" = ps: with ps; [ onkyo-eiscp ];
+    "onvif" = ps: with ps; [  ];
+    "onvif.camera" = ps: with ps; [ ha-ffmpeg ];
+    "openalpr_cloud" = ps: with ps; [  ];
+    "openalpr_cloud.image_processing" = ps: with ps; [  ];
+    "openalpr_local" = ps: with ps; [  ];
+    "openalpr_local.image_processing" = ps: with ps; [  ];
+    "opencv" = ps: with ps; [  ];
+    "opencv.image_processing" = ps: with ps; [ numpy ];
+    "openevse" = ps: with ps; [  ];
+    "openevse.sensor" = ps: with ps; [  ];
+    "openexchangerates" = ps: with ps; [  ];
+    "openexchangerates.sensor" = ps: with ps; [  ];
+    "opengarage" = ps: with ps; [  ];
+    "opengarage.cover" = ps: with ps; [  ];
+    "openhardwaremonitor" = ps: with ps; [  ];
+    "openhardwaremonitor.sensor" = ps: with ps; [  ];
+    "openhome" = ps: with ps; [  ];
+    "openhome.media_player" = ps: with ps; [  ];
+    "opensensemap" = ps: with ps; [  ];
+    "opensensemap.air_quality" = ps: with ps; [  ];
+    "opensky" = ps: with ps; [  ];
+    "opensky.sensor" = ps: with ps; [  ];
     "opentherm_gw" = ps: with ps; [  ];
     "opentherm_gw.binary_sensor" = ps: with ps; [  ];
     "opentherm_gw.climate" = ps: with ps; [  ];
@@ -948,6 +1303,17 @@
     "openuv.config_flow" = ps: with ps; [  ];
     "openuv.const" = ps: with ps; [  ];
     "openuv.sensor" = ps: with ps; [  ];
+    "openweathermap" = ps: with ps; [  ];
+    "openweathermap.sensor" = ps: with ps; [ pyowm ];
+    "openweathermap.weather" = ps: with ps; [ pyowm ];
+    "opple" = ps: with ps; [  ];
+    "opple.light" = ps: with ps; [  ];
+    "orvibo" = ps: with ps; [  ];
+    "orvibo.switch" = ps: with ps; [  ];
+    "osramlightify" = ps: with ps; [  ];
+    "osramlightify.light" = ps: with ps; [  ];
+    "otp" = ps: with ps; [  ];
+    "otp.sensor" = ps: with ps; [ pyotp ];
     "owlet" = ps: with ps; [  ];
     "owlet.binary_sensor" = ps: with ps; [  ];
     "owlet.const" = ps: with ps; [  ];
@@ -955,30 +1321,95 @@
     "owntracks" = ps: with ps; [ pynacl aiohttp-cors ];
     "owntracks.config_flow" = ps: with ps; [  ];
     "owntracks.device_tracker" = ps: with ps; [ pynacl aiohttp-cors ];
+    "panasonic_bluray" = ps: with ps; [  ];
+    "panasonic_bluray.media_player" = ps: with ps; [  ];
+    "panasonic_viera" = ps: with ps; [  ];
+    "panasonic_viera.media_player" = ps: with ps; [ wakeonlan ];
+    "pandora" = ps: with ps; [  ];
+    "pandora.media_player" = ps: with ps; [ pexpect ];
     "panel_custom" = ps: with ps; [ aiohttp-cors ];
     "panel_iframe" = ps: with ps; [ aiohttp-cors ];
+    "pencom" = ps: with ps; [  ];
+    "pencom.switch" = ps: with ps; [  ];
     "persistent_notification" = ps: with ps; [  ];
     "person" = ps: with ps; [  ];
+    "philips_js" = ps: with ps; [  ];
+    "philips_js.media_player" = ps: with ps; [  ];
+    "pi_hole" = ps: with ps; [  ];
+    "pi_hole.sensor" = ps: with ps; [  ];
+    "picotts" = ps: with ps; [  ];
+    "picotts.tts" = ps: with ps; [  ];
+    "piglow" = ps: with ps; [  ];
+    "piglow.light" = ps: with ps; [  ];
     "pilight" = ps: with ps; [  ];
     "pilight.binary_sensor" = ps: with ps; [  ];
     "pilight.sensor" = ps: with ps; [  ];
     "pilight.switch" = ps: with ps; [  ];
+    "ping" = ps: with ps; [  ];
+    "ping.binary_sensor" = ps: with ps; [  ];
+    "ping.device_tracker" = ps: with ps; [  ];
+    "pioneer" = ps: with ps; [  ];
+    "pioneer.media_player" = ps: with ps; [  ];
+    "pjlink" = ps: with ps; [  ];
+    "pjlink.media_player" = ps: with ps; [  ];
     "plant" = ps: with ps; [  ];
+    "plex" = ps: with ps; [  ];
+    "plex.media_player" = ps: with ps; [  ];
+    "plex.sensor" = ps: with ps; [  ];
     "plum_lightpad" = ps: with ps; [  ];
     "plum_lightpad.light" = ps: with ps; [  ];
+    "pocketcasts" = ps: with ps; [  ];
+    "pocketcasts.sensor" = ps: with ps; [  ];
     "point" = ps: with ps; [ aiohttp-cors ];
     "point.alarm_control_panel" = ps: with ps; [  ];
     "point.binary_sensor" = ps: with ps; [  ];
     "point.config_flow" = ps: with ps; [  ];
     "point.const" = ps: with ps; [  ];
     "point.sensor" = ps: with ps; [  ];
+    "pollen" = ps: with ps; [  ];
+    "pollen.sensor" = ps: with ps; [ numpy ];
+    "postnl" = ps: with ps; [  ];
+    "postnl.sensor" = ps: with ps; [  ];
+    "prezzibenzina" = ps: with ps; [  ];
+    "prezzibenzina.sensor" = ps: with ps; [  ];
+    "proliphix" = ps: with ps; [  ];
+    "proliphix.climate" = ps: with ps; [  ];
     "prometheus" = ps: with ps; [ aiohttp-cors prometheus_client ];
+    "prowl" = ps: with ps; [  ];
+    "prowl.notify" = ps: with ps; [  ];
     "proximity" = ps: with ps; [  ];
+    "proxy" = ps: with ps; [  ];
+    "proxy.camera" = ps: with ps; [ pillow ];
     "ps4" = ps: with ps; [  ];
     "ps4.config_flow" = ps: with ps; [  ];
     "ps4.const" = ps: with ps; [  ];
     "ps4.media_player" = ps: with ps; [  ];
+    "pulseaudio_loopback" = ps: with ps; [  ];
+    "pulseaudio_loopback.switch" = ps: with ps; [  ];
+    "push" = ps: with ps; [  ];
+    "push.camera" = ps: with ps; [ aiohttp-cors ];
+    "pushbullet" = ps: with ps; [  ];
+    "pushbullet.notify" = ps: with ps; [ pushbullet ];
+    "pushbullet.sensor" = ps: with ps; [ pushbullet ];
+    "pushetta" = ps: with ps; [  ];
+    "pushetta.notify" = ps: with ps; [  ];
+    "pushover" = ps: with ps; [  ];
+    "pushover.notify" = ps: with ps; [ python-pushover ];
+    "pushsafer" = ps: with ps; [  ];
+    "pushsafer.notify" = ps: with ps; [  ];
+    "pvoutput" = ps: with ps; [  ];
+    "pvoutput.sensor" = ps: with ps; [  ];
+    "pyload" = ps: with ps; [  ];
+    "pyload.sensor" = ps: with ps; [  ];
     "python_script" = ps: with ps; [  ];
+    "qbittorrent" = ps: with ps; [  ];
+    "qbittorrent.sensor" = ps: with ps; [  ];
+    "qnap" = ps: with ps; [  ];
+    "qnap.sensor" = ps: with ps; [  ];
+    "qrcode" = ps: with ps; [  ];
+    "qrcode.image_processing" = ps: with ps; [ pillow ];
+    "quantum_gateway" = ps: with ps; [  ];
+    "quantum_gateway.device_tracker" = ps: with ps; [  ];
     "qwikswitch" = ps: with ps; [  ];
     "qwikswitch.binary_sensor" = ps: with ps; [  ];
     "qwikswitch.light" = ps: with ps; [  ];
@@ -987,7 +1418,13 @@
     "rachio" = ps: with ps; [  ];
     "rachio.binary_sensor" = ps: with ps; [  ];
     "rachio.switch" = ps: with ps; [  ];
+    "radarr" = ps: with ps; [  ];
+    "radarr.sensor" = ps: with ps; [  ];
+    "radiotherm" = ps: with ps; [  ];
+    "radiotherm.climate" = ps: with ps; [  ];
     "rainbird" = ps: with ps; [  ];
+    "rainbird.sensor" = ps: with ps; [  ];
+    "rainbird.switch" = ps: with ps; [  ];
     "raincloud" = ps: with ps; [  ];
     "raincloud.binary_sensor" = ps: with ps; [  ];
     "raincloud.sensor" = ps: with ps; [  ];
@@ -998,20 +1435,41 @@
     "rainmachine.const" = ps: with ps; [  ];
     "rainmachine.sensor" = ps: with ps; [  ];
     "rainmachine.switch" = ps: with ps; [  ];
+    "random" = ps: with ps; [  ];
+    "random.binary_sensor" = ps: with ps; [  ];
+    "random.sensor" = ps: with ps; [  ];
     "raspihats" = ps: with ps; [  ];
     "raspihats.binary_sensor" = ps: with ps; [  ];
     "raspihats.switch" = ps: with ps; [  ];
+    "raspyrfm" = ps: with ps; [  ];
+    "raspyrfm.switch" = ps: with ps; [  ];
+    "recollect_waste" = ps: with ps; [  ];
+    "recollect_waste.sensor" = ps: with ps; [  ];
     "recorder" = ps: with ps; [ sqlalchemy ];
     "recorder.const" = ps: with ps; [  ];
     "recorder.migration" = ps: with ps; [  ];
     "recorder.purge" = ps: with ps; [  ];
     "recorder.util" = ps: with ps; [  ];
+    "recswitch" = ps: with ps; [  ];
+    "recswitch.switch" = ps: with ps; [  ];
     "reddit" = ps: with ps; [  ];
     "reddit.sensor" = ps: with ps; [ praw ];
+    "rejseplanen" = ps: with ps; [  ];
+    "rejseplanen.sensor" = ps: with ps; [  ];
     "remember_the_milk" = ps: with ps; [ httplib2 ];
     "remote" = ps: with ps; [  ];
+    "rest" = ps: with ps; [  ];
+    "rest.binary_sensor" = ps: with ps; [  ];
+    "rest.notify" = ps: with ps; [  ];
+    "rest.sensor" = ps: with ps; [  ];
+    "rest.switch" = ps: with ps; [  ];
     "rest_command" = ps: with ps; [  ];
     "rflink" = ps: with ps; [  ];
+    "rflink.binary_sensor" = ps: with ps; [  ];
+    "rflink.cover" = ps: with ps; [  ];
+    "rflink.light" = ps: with ps; [  ];
+    "rflink.sensor" = ps: with ps; [  ];
+    "rflink.switch" = ps: with ps; [  ];
     "rfxtrx" = ps: with ps; [  ];
     "rfxtrx.binary_sensor" = ps: with ps; [  ];
     "rfxtrx.cover" = ps: with ps; [  ];
@@ -1019,280 +1477,122 @@
     "rfxtrx.sensor" = ps: with ps; [  ];
     "rfxtrx.switch" = ps: with ps; [  ];
     "ring" = ps: with ps; [  ];
+    "ring.binary_sensor" = ps: with ps; [  ];
+    "ring.camera" = ps: with ps; [ ha-ffmpeg ];
+    "ring.sensor" = ps: with ps; [  ];
+    "ripple" = ps: with ps; [  ];
+    "ripple.sensor" = ps: with ps; [  ];
+    "ritassist" = ps: with ps; [  ];
+    "ritassist.device_tracker" = ps: with ps; [  ];
+    "rmvtransport" = ps: with ps; [  ];
+    "rmvtransport.sensor" = ps: with ps; [  ];
+    "rocketchat" = ps: with ps; [  ];
+    "rocketchat.notify" = ps: with ps; [  ];
     "roku" = ps: with ps; [  ];
     "roku.media_player" = ps: with ps; [  ];
     "roku.remote" = ps: with ps; [  ];
+    "roomba" = ps: with ps; [  ];
+    "roomba.vacuum" = ps: with ps; [  ];
     "route53" = ps: with ps; [ boto3 ];
+    "rova" = ps: with ps; [  ];
+    "rova.sensor" = ps: with ps; [  ];
+    "rpi_camera" = ps: with ps; [  ];
+    "rpi_camera.camera" = ps: with ps; [  ];
     "rpi_gpio" = ps: with ps; [  ];
     "rpi_gpio.binary_sensor" = ps: with ps; [  ];
     "rpi_gpio.cover" = ps: with ps; [  ];
     "rpi_gpio.switch" = ps: with ps; [  ];
+    "rpi_gpio_pwm" = ps: with ps; [  ];
+    "rpi_gpio_pwm.light" = ps: with ps; [  ];
     "rpi_pfio" = ps: with ps; [  ];
     "rpi_pfio.binary_sensor" = ps: with ps; [  ];
     "rpi_pfio.switch" = ps: with ps; [  ];
+    "rpi_rf" = ps: with ps; [  ];
+    "rpi_rf.switch" = ps: with ps; [  ];
     "rss_feed_template" = ps: with ps; [ aiohttp-cors ];
+    "rtorrent" = ps: with ps; [  ];
+    "rtorrent.sensor" = ps: with ps; [  ];
+    "russound_rio" = ps: with ps; [  ];
+    "russound_rio.media_player" = ps: with ps; [  ];
+    "russound_rnet" = ps: with ps; [  ];
+    "russound_rnet.media_player" = ps: with ps; [  ];
+    "ruter" = ps: with ps; [  ];
+    "ruter.sensor" = ps: with ps; [  ];
     "sabnzbd" = ps: with ps; [  ];
     "sabnzbd.sensor" = ps: with ps; [  ];
+    "samsungtv" = ps: with ps; [  ];
+    "samsungtv.media_player" = ps: with ps; [ wakeonlan ];
     "satel_integra" = ps: with ps; [  ];
     "satel_integra.alarm_control_panel" = ps: with ps; [  ];
     "satel_integra.binary_sensor" = ps: with ps; [  ];
     "scene" = ps: with ps; [  ];
-    "scene.homeassistant" = ps: with ps; [  ];
-    "scene.hunterdouglas_powerview" = ps: with ps; [  ];
-    "scene.lifx_cloud" = ps: with ps; [  ];
-    "scene.litejet" = ps: with ps; [  ];
+    "scrape" = ps: with ps; [  ];
+    "scrape.sensor" = ps: with ps; [ beautifulsoup4 ];
     "script" = ps: with ps; [  ];
     "scsgate" = ps: with ps; [  ];
     "scsgate.cover" = ps: with ps; [  ];
     "scsgate.light" = ps: with ps; [  ];
     "scsgate.switch" = ps: with ps; [  ];
+    "season" = ps: with ps; [  ];
+    "season.sensor" = ps: with ps; [ ephem ];
+    "sendgrid" = ps: with ps; [  ];
+    "sendgrid.notify" = ps: with ps; [  ];
     "sense" = ps: with ps; [  ];
     "sense.binary_sensor" = ps: with ps; [  ];
     "sense.sensor" = ps: with ps; [  ];
+    "sensehat" = ps: with ps; [  ];
+    "sensehat.light" = ps: with ps; [  ];
+    "sensehat.sensor" = ps: with ps; [  ];
+    "sensibo" = ps: with ps; [  ];
+    "sensibo.climate" = ps: with ps; [  ];
     "sensor" = ps: with ps; [  ];
-    "sensor.aftership" = ps: with ps; [  ];
-    "sensor.airvisual" = ps: with ps; [ pyairvisual ];
-    "sensor.alpha_vantage" = ps: with ps; [  ];
-    "sensor.api_streams" = ps: with ps; [  ];
-    "sensor.arest" = ps: with ps; [  ];
-    "sensor.arwn" = ps: with ps; [ paho-mqtt ];
-    "sensor.asuswrt" = ps: with ps; [  ];
-    "sensor.awair" = ps: with ps; [  ];
-    "sensor.bbox" = ps: with ps; [  ];
-    "sensor.bh1750" = ps: with ps; [  ];
-    "sensor.bitcoin" = ps: with ps; [  ];
-    "sensor.blockchain" = ps: with ps; [  ];
-    "sensor.bme280" = ps: with ps; [  ];
-    "sensor.bme680" = ps: with ps; [  ];
-    "sensor.bom" = ps: with ps; [  ];
-    "sensor.broadlink" = ps: with ps; [ broadlink ];
-    "sensor.brottsplatskartan" = ps: with ps; [  ];
-    "sensor.buienradar" = ps: with ps; [  ];
-    "sensor.canary" = ps: with ps; [  ];
-    "sensor.cert_expiry" = ps: with ps; [  ];
-    "sensor.citybikes" = ps: with ps; [  ];
-    "sensor.co2signal" = ps: with ps; [  ];
-    "sensor.coinbase" = ps: with ps; [  ];
-    "sensor.coinmarketcap" = ps: with ps; [ coinmarketcap ];
-    "sensor.comed_hourly_pricing" = ps: with ps; [  ];
-    "sensor.command_line" = ps: with ps; [  ];
-    "sensor.cpuspeed" = ps: with ps; [ py-cpuinfo ];
-    "sensor.crimereports" = ps: with ps; [  ];
-    "sensor.cups" = ps: with ps; [ pycups ];
-    "sensor.currencylayer" = ps: with ps; [  ];
-    "sensor.darksky" = ps: with ps; [ python-forecastio ];
-    "sensor.deluge" = ps: with ps; [ deluge-client ];
-    "sensor.demo" = ps: with ps; [  ];
-    "sensor.deutsche_bahn" = ps: with ps; [  ];
-    "sensor.dht" = ps: with ps; [  ];
-    "sensor.discogs" = ps: with ps; [ discogs_client ];
-    "sensor.dnsip" = ps: with ps; [ aiodns ];
-    "sensor.dsmr" = ps: with ps; [  ];
-    "sensor.dte_energy_bridge" = ps: with ps; [  ];
-    "sensor.dublin_bus_transport" = ps: with ps; [  ];
-    "sensor.duke_energy" = ps: with ps; [  ];
-    "sensor.dwd_weather_warnings" = ps: with ps; [  ];
-    "sensor.dyson" = ps: with ps; [  ];
-    "sensor.ebox" = ps: with ps; [  ];
-    "sensor.eddystone_temperature" = ps: with ps; [ construct ];
-    "sensor.efergy" = ps: with ps; [  ];
-    "sensor.eliqonline" = ps: with ps; [  ];
-    "sensor.emoncms" = ps: with ps; [  ];
-    "sensor.enphase_envoy" = ps: with ps; [  ];
-    "sensor.entur_public_transport" = ps: with ps; [  ];
-    "sensor.envirophat" = ps: with ps; [  ];
-    "sensor.etherscan" = ps: with ps; [  ];
-    "sensor.fail2ban" = ps: with ps; [  ];
-    "sensor.fedex" = ps: with ps; [  ];
-    "sensor.fido" = ps: with ps; [  ];
-    "sensor.file" = ps: with ps; [  ];
-    "sensor.filesize" = ps: with ps; [  ];
-    "sensor.filter" = ps: with ps; [  ];
-    "sensor.fints" = ps: with ps; [ fints ];
-    "sensor.fitbit" = ps: with ps; [ aiohttp-cors ];
-    "sensor.fixer" = ps: with ps; [  ];
-    "sensor.flunearyou" = ps: with ps; [  ];
-    "sensor.folder" = ps: with ps; [  ];
-    "sensor.foobot" = ps: with ps; [  ];
-    "sensor.fritzbox_callmonitor" = ps: with ps; [ fritzconnection ];
-    "sensor.fritzbox_netmonitor" = ps: with ps; [ fritzconnection ];
-    "sensor.gearbest" = ps: with ps; [  ];
-    "sensor.geizhals" = ps: with ps; [  ];
-    "sensor.geo_rss_events" = ps: with ps; [  ];
-    "sensor.github" = ps: with ps; [ PyGithub ];
-    "sensor.gitlab_ci" = ps: with ps; [ python-gitlab ];
-    "sensor.gitter" = ps: with ps; [  ];
-    "sensor.glances" = ps: with ps; [  ];
-    "sensor.google_travel_time" = ps: with ps; [  ];
-    "sensor.google_wifi" = ps: with ps; [  ];
-    "sensor.gpsd" = ps: with ps; [  ];
-    "sensor.greeneye_monitor" = ps: with ps; [  ];
-    "sensor.gtfs" = ps: with ps; [  ];
-    "sensor.gtt" = ps: with ps; [  ];
-    "sensor.haveibeenpwned" = ps: with ps; [  ];
-    "sensor.hddtemp" = ps: with ps; [  ];
-    "sensor.history_stats" = ps: with ps; [ aiohttp-cors sqlalchemy ];
-    "sensor.hp_ilo" = ps: with ps; [  ];
-    "sensor.htu21d" = ps: with ps; [  ];
-    "sensor.hydroquebec" = ps: with ps; [  ];
-    "sensor.iliad_italy" = ps: with ps; [  ];
-    "sensor.imap" = ps: with ps; [  ];
-    "sensor.imap_email_content" = ps: with ps; [  ];
-    "sensor.influxdb" = ps: with ps; [ influxdb ];
-    "sensor.integration" = ps: with ps; [  ];
-    "sensor.irish_rail_transport" = ps: with ps; [  ];
-    "sensor.islamic_prayer_times" = ps: with ps; [  ];
-    "sensor.jewish_calendar" = ps: with ps; [  ];
-    "sensor.kwb" = ps: with ps; [  ];
-    "sensor.lacrosse" = ps: with ps; [  ];
-    "sensor.lastfm" = ps: with ps; [ pylast ];
-    "sensor.launch_library" = ps: with ps; [  ];
-    "sensor.linky" = ps: with ps; [  ];
-    "sensor.linux_battery" = ps: with ps; [ batinfo ];
-    "sensor.london_air" = ps: with ps; [  ];
-    "sensor.london_underground" = ps: with ps; [  ];
-    "sensor.loopenergy" = ps: with ps; [  ];
-    "sensor.lyft" = ps: with ps; [  ];
-    "sensor.magicseaweed" = ps: with ps; [  ];
-    "sensor.metoffice" = ps: with ps; [  ];
-    "sensor.mfi" = ps: with ps; [  ];
-    "sensor.mhz19" = ps: with ps; [  ];
-    "sensor.miflora" = ps: with ps; [  ];
-    "sensor.min_max" = ps: with ps; [  ];
-    "sensor.mitemp_bt" = ps: with ps; [  ];
-    "sensor.modem_callerid" = ps: with ps; [  ];
-    "sensor.mold_indicator" = ps: with ps; [  ];
-    "sensor.moon" = ps: with ps; [  ];
-    "sensor.mopar" = ps: with ps; [  ];
-    "sensor.mqtt_room" = ps: with ps; [ paho-mqtt ];
-    "sensor.mvglive" = ps: with ps; [ PyMVGLive ];
-    "sensor.nederlandse_spoorwegen" = ps: with ps; [  ];
-    "sensor.netatmo_public" = ps: with ps; [ aiohttp-cors ];
-    "sensor.netdata" = ps: with ps; [  ];
-    "sensor.neurio_energy" = ps: with ps; [  ];
-    "sensor.nmbs" = ps: with ps; [  ];
-    "sensor.noaa_tides" = ps: with ps; [  ];
-    "sensor.nsw_fuel_station" = ps: with ps; [  ];
-    "sensor.nut" = ps: with ps; [  ];
-    "sensor.nzbget" = ps: with ps; [  ];
-    "sensor.ohmconnect" = ps: with ps; [ defusedxml ];
-    "sensor.onewire" = ps: with ps; [  ];
-    "sensor.openevse" = ps: with ps; [  ];
-    "sensor.openexchangerates" = ps: with ps; [  ];
-    "sensor.openhardwaremonitor" = ps: with ps; [  ];
-    "sensor.opensky" = ps: with ps; [  ];
-    "sensor.openweathermap" = ps: with ps; [ pyowm ];
-    "sensor.otp" = ps: with ps; [ pyotp ];
-    "sensor.pi_hole" = ps: with ps; [  ];
-    "sensor.plex" = ps: with ps; [  ];
-    "sensor.pocketcasts" = ps: with ps; [  ];
-    "sensor.pollen" = ps: with ps; [ numpy ];
-    "sensor.postnl" = ps: with ps; [  ];
-    "sensor.prezzibenzina" = ps: with ps; [  ];
-    "sensor.pushbullet" = ps: with ps; [ pushbullet ];
-    "sensor.pvoutput" = ps: with ps; [  ];
-    "sensor.pyload" = ps: with ps; [  ];
-    "sensor.qbittorrent" = ps: with ps; [  ];
-    "sensor.qnap" = ps: with ps; [  ];
-    "sensor.radarr" = ps: with ps; [  ];
-    "sensor.rainbird" = ps: with ps; [  ];
-    "sensor.random" = ps: with ps; [  ];
-    "sensor.recollect_waste" = ps: with ps; [  ];
-    "sensor.rejseplanen" = ps: with ps; [  ];
-    "sensor.rest" = ps: with ps; [  ];
-    "sensor.rflink" = ps: with ps; [  ];
-    "sensor.ring" = ps: with ps; [  ];
-    "sensor.ripple" = ps: with ps; [  ];
-    "sensor.rmvtransport" = ps: with ps; [  ];
-    "sensor.rova" = ps: with ps; [  ];
-    "sensor.rtorrent" = ps: with ps; [  ];
-    "sensor.ruter" = ps: with ps; [  ];
-    "sensor.scrape" = ps: with ps; [ beautifulsoup4 ];
-    "sensor.season" = ps: with ps; [ ephem ];
-    "sensor.sensehat" = ps: with ps; [  ];
-    "sensor.serial" = ps: with ps; [  ];
-    "sensor.serial_pm" = ps: with ps; [  ];
-    "sensor.seventeentrack" = ps: with ps; [  ];
-    "sensor.shodan" = ps: with ps; [ shodan ];
-    "sensor.sht31" = ps: with ps; [  ];
-    "sensor.sigfox" = ps: with ps; [  ];
-    "sensor.simulated" = ps: with ps; [  ];
-    "sensor.skybeacon" = ps: with ps; [  ];
-    "sensor.sleepiq" = ps: with ps; [  ];
-    "sensor.sma" = ps: with ps; [  ];
-    "sensor.snmp" = ps: with ps; [ pysnmp ];
-    "sensor.sochain" = ps: with ps; [  ];
-    "sensor.socialblade" = ps: with ps; [  ];
-    "sensor.solaredge" = ps: with ps; [  ];
-    "sensor.sonarr" = ps: with ps; [  ];
-    "sensor.spotcrime" = ps: with ps; [  ];
-    "sensor.sql" = ps: with ps; [ sqlalchemy ];
-    "sensor.srp_energy" = ps: with ps; [  ];
-    "sensor.starlingbank" = ps: with ps; [  ];
-    "sensor.startca" = ps: with ps; [ xmltodict ];
-    "sensor.statistics" = ps: with ps; [  ];
-    "sensor.steam_online" = ps: with ps; [  ];
-    "sensor.supervisord" = ps: with ps; [  ];
-    "sensor.swiss_hydrological_data" = ps: with ps; [  ];
-    "sensor.swiss_public_transport" = ps: with ps; [  ];
-    "sensor.syncthru" = ps: with ps; [  ];
-    "sensor.synologydsm" = ps: with ps; [  ];
-    "sensor.systemmonitor" = ps: with ps; [ psutil ];
-    "sensor.sytadin" = ps: with ps; [ beautifulsoup4 ];
-    "sensor.tank_utility" = ps: with ps; [  ];
-    "sensor.tautulli" = ps: with ps; [  ];
-    "sensor.tcp" = ps: with ps; [  ];
-    "sensor.ted5000" = ps: with ps; [ xmltodict ];
-    "sensor.teksavvy" = ps: with ps; [  ];
-    "sensor.temper" = ps: with ps; [  ];
-    "sensor.template" = ps: with ps; [  ];
-    "sensor.thermoworks_smoke" = ps: with ps; [  ];
-    "sensor.time_date" = ps: with ps; [  ];
-    "sensor.torque" = ps: with ps; [ aiohttp-cors ];
-    "sensor.trafikverket_weatherstation" = ps: with ps; [  ];
-    "sensor.transport_nsw" = ps: with ps; [  ];
-    "sensor.travisci" = ps: with ps; [  ];
-    "sensor.twitch" = ps: with ps; [  ];
-    "sensor.uber" = ps: with ps; [  ];
-    "sensor.uk_transport" = ps: with ps; [  ];
-    "sensor.ups" = ps: with ps; [  ];
-    "sensor.uptime" = ps: with ps; [  ];
-    "sensor.uscis" = ps: with ps; [  ];
-    "sensor.vasttrafik" = ps: with ps; [  ];
-    "sensor.version" = ps: with ps; [  ];
-    "sensor.viaggiatreno" = ps: with ps; [  ];
-    "sensor.volkszaehler" = ps: with ps; [  ];
-    "sensor.vultr" = ps: with ps; [ vultr ];
-    "sensor.waqi" = ps: with ps; [  ];
-    "sensor.waze_travel_time" = ps: with ps; [ WazeRouteCalculator ];
-    "sensor.whois" = ps: with ps; [  ];
-    "sensor.worldclock" = ps: with ps; [  ];
-    "sensor.worldtidesinfo" = ps: with ps; [  ];
-    "sensor.worxlandroid" = ps: with ps; [  ];
-    "sensor.wsdot" = ps: with ps; [  ];
-    "sensor.wunderground" = ps: with ps; [  ];
-    "sensor.xbox_live" = ps: with ps; [  ];
-    "sensor.yr" = ps: with ps; [ xmltodict ];
-    "sensor.yweather" = ps: with ps; [ yahooweather ];
-    "sensor.zamg" = ps: with ps; [  ];
-    "sensor.zestimate" = ps: with ps; [ xmltodict ];
+    "serial" = ps: with ps; [  ];
+    "serial.sensor" = ps: with ps; [  ];
+    "serial_pm" = ps: with ps; [  ];
+    "serial_pm.sensor" = ps: with ps; [  ];
+    "sesame" = ps: with ps; [  ];
+    "sesame.lock" = ps: with ps; [  ];
+    "seven_segments" = ps: with ps; [  ];
+    "seven_segments.image_processing" = ps: with ps; [  ];
+    "seventeentrack" = ps: with ps; [  ];
+    "seventeentrack.sensor" = ps: with ps; [  ];
     "shell_command" = ps: with ps; [  ];
     "shiftr" = ps: with ps; [ paho-mqtt ];
+    "shodan" = ps: with ps; [  ];
+    "shodan.sensor" = ps: with ps; [ shodan ];
     "shopping_list" = ps: with ps; [ aiohttp-cors ];
+    "sht31" = ps: with ps; [  ];
+    "sht31.sensor" = ps: with ps; [  ];
+    "sigfox" = ps: with ps; [  ];
+    "sigfox.sensor" = ps: with ps; [  ];
+    "simplepush" = ps: with ps; [  ];
+    "simplepush.notify" = ps: with ps; [  ];
     "simplisafe" = ps: with ps; [  ];
     "simplisafe.alarm_control_panel" = ps: with ps; [  ];
     "simplisafe.config_flow" = ps: with ps; [  ];
     "simplisafe.const" = ps: with ps; [  ];
+    "simulated" = ps: with ps; [  ];
+    "simulated.sensor" = ps: with ps; [  ];
     "sisyphus" = ps: with ps; [  ];
     "sisyphus.light" = ps: with ps; [  ];
     "sisyphus.media_player" = ps: with ps; [  ];
+    "sky_hub" = ps: with ps; [  ];
+    "sky_hub.device_tracker" = ps: with ps; [  ];
+    "skybeacon" = ps: with ps; [  ];
+    "skybeacon.sensor" = ps: with ps; [  ];
     "skybell" = ps: with ps; [  ];
     "skybell.binary_sensor" = ps: with ps; [  ];
     "skybell.camera" = ps: with ps; [  ];
     "skybell.light" = ps: with ps; [  ];
     "skybell.sensor" = ps: with ps; [  ];
     "skybell.switch" = ps: with ps; [  ];
+    "slack" = ps: with ps; [  ];
+    "slack.notify" = ps: with ps; [  ];
     "sleepiq" = ps: with ps; [  ];
+    "sleepiq.binary_sensor" = ps: with ps; [  ];
+    "sleepiq.sensor" = ps: with ps; [  ];
+    "sma" = ps: with ps; [  ];
+    "sma.sensor" = ps: with ps; [  ];
     "smappee" = ps: with ps; [  ];
     "smappee.sensor" = ps: with ps; [  ];
     "smappee.switch" = ps: with ps; [  ];
@@ -1313,11 +1613,35 @@
     "smhi.config_flow" = ps: with ps; [  ];
     "smhi.const" = ps: with ps; [  ];
     "smhi.weather" = ps: with ps; [  ];
+    "smtp" = ps: with ps; [  ];
+    "smtp.notify" = ps: with ps; [  ];
+    "snapcast" = ps: with ps; [  ];
+    "snapcast.media_player" = ps: with ps; [ snapcast ];
     "snips" = ps: with ps; [ paho-mqtt ];
+    "snmp" = ps: with ps; [  ];
+    "snmp.device_tracker" = ps: with ps; [ pysnmp ];
+    "snmp.sensor" = ps: with ps; [ pysnmp ];
+    "snmp.switch" = ps: with ps; [ pysnmp ];
+    "sochain" = ps: with ps; [  ];
+    "sochain.sensor" = ps: with ps; [  ];
+    "socialblade" = ps: with ps; [  ];
+    "socialblade.sensor" = ps: with ps; [  ];
+    "solaredge" = ps: with ps; [  ];
+    "solaredge.sensor" = ps: with ps; [  ];
+    "sonarr" = ps: with ps; [  ];
+    "sonarr.sensor" = ps: with ps; [  ];
+    "songpal" = ps: with ps; [  ];
+    "songpal.media_player" = ps: with ps; [  ];
     "sonos" = ps: with ps; [  ];
     "sonos.media_player" = ps: with ps; [  ];
+    "sony_projector" = ps: with ps; [  ];
+    "sony_projector.switch" = ps: with ps; [  ];
+    "soundtouch" = ps: with ps; [  ];
+    "soundtouch.media_player" = ps: with ps; [ libsoundtouch ];
     "spaceapi" = ps: with ps; [ aiohttp-cors ];
     "spc" = ps: with ps; [  ];
+    "spc.alarm_control_panel" = ps: with ps; [  ];
+    "spc.binary_sensor" = ps: with ps; [  ];
     "speedtestdotnet" = ps: with ps; [ speedtest-cli ];
     "speedtestdotnet.const" = ps: with ps; [  ];
     "speedtestdotnet.sensor" = ps: with ps; [ speedtest-cli ];
@@ -1325,53 +1649,66 @@
     "spider.climate" = ps: with ps; [  ];
     "spider.switch" = ps: with ps; [  ];
     "splunk" = ps: with ps; [  ];
+    "spotcrime" = ps: with ps; [  ];
+    "spotcrime.sensor" = ps: with ps; [  ];
+    "spotify" = ps: with ps; [  ];
+    "spotify.media_player" = ps: with ps; [ aiohttp-cors ];
+    "sql" = ps: with ps; [  ];
+    "sql.sensor" = ps: with ps; [ sqlalchemy ];
+    "squeezebox" = ps: with ps; [  ];
+    "squeezebox.media_player" = ps: with ps; [  ];
+    "srp_energy" = ps: with ps; [  ];
+    "srp_energy.sensor" = ps: with ps; [  ];
+    "starlingbank" = ps: with ps; [  ];
+    "starlingbank.sensor" = ps: with ps; [  ];
+    "startca" = ps: with ps; [  ];
+    "startca.sensor" = ps: with ps; [ xmltodict ];
+    "statistics" = ps: with ps; [  ];
+    "statistics.sensor" = ps: with ps; [  ];
     "statsd" = ps: with ps; [ statsd ];
+    "steam_online" = ps: with ps; [  ];
+    "steam_online.sensor" = ps: with ps; [  ];
     "stream" = ps: with ps; [ aiohttp-cors av ];
     "stream.const" = ps: with ps; [  ];
     "stream.core" = ps: with ps; [  ];
     "stream.hls" = ps: with ps; [  ];
+    "stream.recorder" = ps: with ps; [  ];
     "stream.worker" = ps: with ps; [  ];
+    "stride" = ps: with ps; [  ];
+    "stride.notify" = ps: with ps; [  ];
     "sun" = ps: with ps; [  ];
+    "supervisord" = ps: with ps; [  ];
+    "supervisord.sensor" = ps: with ps; [  ];
+    "swiss_hydrological_data" = ps: with ps; [  ];
+    "swiss_hydrological_data.sensor" = ps: with ps; [  ];
+    "swiss_public_transport" = ps: with ps; [  ];
+    "swiss_public_transport.sensor" = ps: with ps; [  ];
+    "swisscom" = ps: with ps; [  ];
+    "swisscom.device_tracker" = ps: with ps; [  ];
     "switch" = ps: with ps; [  ];
-    "switch.acer_projector" = ps: with ps; [ pyserial ];
-    "switch.anel_pwrctrl" = ps: with ps; [  ];
-    "switch.arest" = ps: with ps; [  ];
-    "switch.broadlink" = ps: with ps; [ broadlink ];
-    "switch.command_line" = ps: with ps; [  ];
-    "switch.deluge" = ps: with ps; [ deluge-client ];
-    "switch.demo" = ps: with ps; [  ];
-    "switch.digitalloggers" = ps: with ps; [  ];
-    "switch.dlink" = ps: with ps; [  ];
-    "switch.edimax" = ps: with ps; [  ];
-    "switch.flux" = ps: with ps; [  ];
-    "switch.fritzdect" = ps: with ps; [  ];
-    "switch.hikvisioncam" = ps: with ps; [  ];
-    "switch.hook" = ps: with ps; [  ];
-    "switch.kankun" = ps: with ps; [  ];
-    "switch.litejet" = ps: with ps; [  ];
-    "switch.mfi" = ps: with ps; [  ];
-    "switch.mystrom" = ps: with ps; [  ];
-    "switch.netio" = ps: with ps; [ aiohttp-cors ];
-    "switch.orvibo" = ps: with ps; [  ];
-    "switch.pencom" = ps: with ps; [  ];
-    "switch.pulseaudio_loopback" = ps: with ps; [  ];
-    "switch.rainbird" = ps: with ps; [  ];
-    "switch.raspyrfm" = ps: with ps; [  ];
-    "switch.recswitch" = ps: with ps; [  ];
-    "switch.rest" = ps: with ps; [  ];
-    "switch.rflink" = ps: with ps; [  ];
-    "switch.rpi_rf" = ps: with ps; [  ];
-    "switch.snmp" = ps: with ps; [ pysnmp ];
-    "switch.sony_projector" = ps: with ps; [  ];
-    "switch.switchbot" = ps: with ps; [  ];
-    "switch.switchmate" = ps: with ps; [  ];
-    "switch.telnet" = ps: with ps; [  ];
-    "switch.template" = ps: with ps; [  ];
-    "switch.vesync" = ps: with ps; [  ];
-    "switch.vultr" = ps: with ps; [ vultr ];
-    "switch.wake_on_lan" = ps: with ps; [ wakeonlan ];
+    "switch.light" = ps: with ps; [  ];
+    "switchbot" = ps: with ps; [  ];
+    "switchbot.switch" = ps: with ps; [  ];
+    "switchmate" = ps: with ps; [  ];
+    "switchmate.switch" = ps: with ps; [  ];
+    "syncthru" = ps: with ps; [  ];
+    "syncthru.sensor" = ps: with ps; [  ];
+    "synology" = ps: with ps; [  ];
+    "synology.camera" = ps: with ps; [  ];
+    "synology_chat" = ps: with ps; [  ];
+    "synology_chat.notify" = ps: with ps; [  ];
+    "synology_srm" = ps: with ps; [  ];
+    "synology_srm.device_tracker" = ps: with ps; [  ];
+    "synologydsm" = ps: with ps; [  ];
+    "synologydsm.sensor" = ps: with ps; [  ];
+    "syslog" = ps: with ps; [  ];
+    "syslog.notify" = ps: with ps; [  ];
     "system_health" = ps: with ps; [ aiohttp-cors ];
     "system_log" = ps: with ps; [ aiohttp-cors ];
+    "systemmonitor" = ps: with ps; [  ];
+    "systemmonitor.sensor" = ps: with ps; [ psutil ];
+    "sytadin" = ps: with ps; [  ];
+    "sytadin.sensor" = ps: with ps; [ beautifulsoup4 ];
     "tado" = ps: with ps; [  ];
     "tado.climate" = ps: with ps; [  ];
     "tado.device_tracker" = ps: with ps; [  ];
@@ -1382,6 +1719,21 @@
     "tahoma.scene" = ps: with ps; [  ];
     "tahoma.sensor" = ps: with ps; [  ];
     "tahoma.switch" = ps: with ps; [  ];
+    "tank_utility" = ps: with ps; [  ];
+    "tank_utility.sensor" = ps: with ps; [  ];
+    "tapsaff" = ps: with ps; [  ];
+    "tapsaff.binary_sensor" = ps: with ps; [  ];
+    "tautulli" = ps: with ps; [  ];
+    "tautulli.sensor" = ps: with ps; [  ];
+    "tcp" = ps: with ps; [  ];
+    "tcp.binary_sensor" = ps: with ps; [  ];
+    "tcp.sensor" = ps: with ps; [  ];
+    "ted5000" = ps: with ps; [  ];
+    "ted5000.sensor" = ps: with ps; [ xmltodict ];
+    "teksavvy" = ps: with ps; [  ];
+    "teksavvy.sensor" = ps: with ps; [  ];
+    "telegram" = ps: with ps; [  ];
+    "telegram.notify" = ps: with ps; [ python-telegram-bot ];
     "telegram_bot" = ps: with ps; [ python-telegram-bot ];
     "telegram_bot.broadcast" = ps: with ps; [  ];
     "telegram_bot.polling" = ps: with ps; [  ];
@@ -1400,6 +1752,20 @@
     "tellstick.light" = ps: with ps; [  ];
     "tellstick.sensor" = ps: with ps; [  ];
     "tellstick.switch" = ps: with ps; [  ];
+    "telnet" = ps: with ps; [  ];
+    "telnet.switch" = ps: with ps; [  ];
+    "temper" = ps: with ps; [  ];
+    "temper.sensor" = ps: with ps; [  ];
+    "template" = ps: with ps; [  ];
+    "template.binary_sensor" = ps: with ps; [  ];
+    "template.cover" = ps: with ps; [  ];
+    "template.fan" = ps: with ps; [  ];
+    "template.light" = ps: with ps; [  ];
+    "template.lock" = ps: with ps; [  ];
+    "template.sensor" = ps: with ps; [  ];
+    "template.switch" = ps: with ps; [  ];
+    "tensorflow" = ps: with ps; [  ];
+    "tensorflow.image_processing" = ps: with ps; [ numpy pillow protobuf ];
     "tesla" = ps: with ps; [  ];
     "tesla.binary_sensor" = ps: with ps; [  ];
     "tesla.climate" = ps: with ps; [  ];
@@ -1407,47 +1773,78 @@
     "tesla.lock" = ps: with ps; [  ];
     "tesla.sensor" = ps: with ps; [  ];
     "tesla.switch" = ps: with ps; [  ];
+    "tfiac" = ps: with ps; [  ];
+    "tfiac.climate" = ps: with ps; [  ];
+    "thermoworks_smoke" = ps: with ps; [  ];
+    "thermoworks_smoke.sensor" = ps: with ps; [  ];
     "thethingsnetwork" = ps: with ps; [  ];
     "thethingsnetwork.sensor" = ps: with ps; [  ];
     "thingspeak" = ps: with ps; [  ];
     "thinkingcleaner" = ps: with ps; [  ];
     "thinkingcleaner.sensor" = ps: with ps; [  ];
     "thinkingcleaner.switch" = ps: with ps; [  ];
+    "thomson" = ps: with ps; [  ];
+    "thomson.device_tracker" = ps: with ps; [  ];
+    "threshold" = ps: with ps; [  ];
+    "threshold.binary_sensor" = ps: with ps; [  ];
     "tibber" = ps: with ps; [  ];
     "tibber.notify" = ps: with ps; [  ];
     "tibber.sensor" = ps: with ps; [  ];
+    "tikteck" = ps: with ps; [  ];
+    "tikteck.light" = ps: with ps; [  ];
+    "tile" = ps: with ps; [  ];
+    "tile.device_tracker" = ps: with ps; [  ];
+    "time_date" = ps: with ps; [  ];
+    "time_date.sensor" = ps: with ps; [  ];
     "timer" = ps: with ps; [  ];
+    "tod" = ps: with ps; [  ];
+    "tod.binary_sensor" = ps: with ps; [  ];
+    "todoist" = ps: with ps; [  ];
+    "todoist.calendar" = ps: with ps; [ todoist ];
     "tof" = ps: with ps; [  ];
     "tof.sensor" = ps: with ps; [  ];
+    "tomato" = ps: with ps; [  ];
+    "tomato.device_tracker" = ps: with ps; [  ];
     "toon" = ps: with ps; [  ];
     "toon.binary_sensor" = ps: with ps; [  ];
     "toon.climate" = ps: with ps; [  ];
     "toon.config_flow" = ps: with ps; [  ];
     "toon.const" = ps: with ps; [  ];
     "toon.sensor" = ps: with ps; [  ];
+    "torque" = ps: with ps; [  ];
+    "torque.sensor" = ps: with ps; [ aiohttp-cors ];
+    "totalconnect" = ps: with ps; [  ];
+    "totalconnect.alarm_control_panel" = ps: with ps; [  ];
+    "touchline" = ps: with ps; [  ];
+    "touchline.climate" = ps: with ps; [  ];
     "tplink" = ps: with ps; [  ];
+    "tplink.device_tracker" = ps: with ps; [  ];
     "tplink.light" = ps: with ps; [  ];
     "tplink.switch" = ps: with ps; [  ];
     "tplink_lte" = ps: with ps; [  ];
     "tplink_lte.notify" = ps: with ps; [  ];
+    "traccar" = ps: with ps; [  ];
+    "traccar.device_tracker" = ps: with ps; [  ];
+    "trackr" = ps: with ps; [  ];
+    "trackr.device_tracker" = ps: with ps; [  ];
     "tradfri" = ps: with ps; [  ];
     "tradfri.config_flow" = ps: with ps; [  ];
     "tradfri.const" = ps: with ps; [  ];
     "tradfri.light" = ps: with ps; [  ];
     "tradfri.sensor" = ps: with ps; [  ];
     "tradfri.switch" = ps: with ps; [  ];
+    "trafikverket_weatherstation" = ps: with ps; [  ];
+    "trafikverket_weatherstation.sensor" = ps: with ps; [  ];
     "transmission" = ps: with ps; [ transmissionrpc ];
     "transmission.sensor" = ps: with ps; [ transmissionrpc ];
     "transmission.switch" = ps: with ps; [ transmissionrpc ];
+    "transport_nsw" = ps: with ps; [  ];
+    "transport_nsw.sensor" = ps: with ps; [  ];
+    "travisci" = ps: with ps; [  ];
+    "travisci.sensor" = ps: with ps; [  ];
+    "trend" = ps: with ps; [  ];
+    "trend.binary_sensor" = ps: with ps; [ numpy ];
     "tts" = ps: with ps; [ aiohttp-cors mutagen ];
-    "tts.amazon_polly" = ps: with ps; [ boto3 ];
-    "tts.baidu" = ps: with ps; [  ];
-    "tts.demo" = ps: with ps; [  ];
-    "tts.marytts" = ps: with ps; [  ];
-    "tts.microsoft" = ps: with ps; [  ];
-    "tts.picotts" = ps: with ps; [  ];
-    "tts.voicerss" = ps: with ps; [  ];
-    "tts.yandextts" = ps: with ps; [  ];
     "tuya" = ps: with ps; [  ];
     "tuya.climate" = ps: with ps; [  ];
     "tuya.cover" = ps: with ps; [  ];
@@ -1456,11 +1853,36 @@
     "tuya.scene" = ps: with ps; [  ];
     "tuya.switch" = ps: with ps; [  ];
     "twilio" = ps: with ps; [ aiohttp-cors twilio ];
+    "twilio_call" = ps: with ps; [  ];
+    "twilio_call.notify" = ps: with ps; [ aiohttp-cors twilio ];
+    "twilio_sms" = ps: with ps; [  ];
+    "twilio_sms.notify" = ps: with ps; [ aiohttp-cors twilio ];
+    "twitch" = ps: with ps; [  ];
+    "twitch.sensor" = ps: with ps; [  ];
+    "twitter" = ps: with ps; [  ];
+    "twitter.notify" = ps: with ps; [  ];
+    "ubee" = ps: with ps; [  ];
+    "ubee.device_tracker" = ps: with ps; [  ];
+    "uber" = ps: with ps; [  ];
+    "uber.sensor" = ps: with ps; [  ];
+    "ubus" = ps: with ps; [  ];
+    "ubus.device_tracker" = ps: with ps; [  ];
+    "ue_smart_radio" = ps: with ps; [  ];
+    "ue_smart_radio.media_player" = ps: with ps; [  ];
+    "uk_transport" = ps: with ps; [  ];
+    "uk_transport.sensor" = ps: with ps; [  ];
     "unifi" = ps: with ps; [ aiounifi ];
     "unifi.const" = ps: with ps; [  ];
     "unifi.controller" = ps: with ps; [  ];
+    "unifi.device_tracker" = ps: with ps; [ pyunifi ];
     "unifi.errors" = ps: with ps; [  ];
     "unifi.switch" = ps: with ps; [ aiounifi ];
+    "unifi_direct" = ps: with ps; [  ];
+    "unifi_direct.device_tracker" = ps: with ps; [ pexpect ];
+    "universal" = ps: with ps; [  ];
+    "universal.media_player" = ps: with ps; [  ];
+    "upc_connect" = ps: with ps; [  ];
+    "upc_connect.device_tracker" = ps: with ps; [ defusedxml ];
     "upcloud" = ps: with ps; [  ];
     "upcloud.binary_sensor" = ps: with ps; [  ];
     "upcloud.switch" = ps: with ps; [  ];
@@ -1469,16 +1891,27 @@
     "upnp.const" = ps: with ps; [  ];
     "upnp.device" = ps: with ps; [  ];
     "upnp.sensor" = ps: with ps; [  ];
+    "ups" = ps: with ps; [  ];
+    "ups.sensor" = ps: with ps; [  ];
+    "uptime" = ps: with ps; [  ];
+    "uptime.sensor" = ps: with ps; [  ];
+    "uptimerobot" = ps: with ps; [  ];
+    "uptimerobot.binary_sensor" = ps: with ps; [  ];
+    "uscis" = ps: with ps; [  ];
+    "uscis.sensor" = ps: with ps; [  ];
+    "usgs_earthquakes_feed" = ps: with ps; [  ];
+    "usgs_earthquakes_feed.geo_location" = ps: with ps; [  ];
     "usps" = ps: with ps; [  ];
     "usps.camera" = ps: with ps; [  ];
     "usps.sensor" = ps: with ps; [  ];
     "utility_meter" = ps: with ps; [  ];
     "utility_meter.const" = ps: with ps; [  ];
     "utility_meter.sensor" = ps: with ps; [  ];
+    "uvc" = ps: with ps; [  ];
+    "uvc.camera" = ps: with ps; [  ];
     "vacuum" = ps: with ps; [  ];
-    "vacuum.demo" = ps: with ps; [  ];
-    "vacuum.dyson" = ps: with ps; [  ];
-    "vacuum.roomba" = ps: with ps; [  ];
+    "vasttrafik" = ps: with ps; [  ];
+    "vasttrafik.sensor" = ps: with ps; [  ];
     "velbus" = ps: with ps; [  ];
     "velbus.binary_sensor" = ps: with ps; [  ];
     "velbus.climate" = ps: with ps; [  ];
@@ -1488,6 +1921,8 @@
     "velux" = ps: with ps; [  ];
     "velux.cover" = ps: with ps; [  ];
     "velux.scene" = ps: with ps; [  ];
+    "venstar" = ps: with ps; [  ];
+    "venstar.climate" = ps: with ps; [  ];
     "vera" = ps: with ps; [  ];
     "vera.binary_sensor" = ps: with ps; [  ];
     "vera.climate" = ps: with ps; [  ];
@@ -1504,6 +1939,22 @@
     "verisure.lock" = ps: with ps; [  ];
     "verisure.sensor" = ps: with ps; [  ];
     "verisure.switch" = ps: with ps; [  ];
+    "version" = ps: with ps; [  ];
+    "version.sensor" = ps: with ps; [  ];
+    "vesync" = ps: with ps; [  ];
+    "vesync.switch" = ps: with ps; [  ];
+    "viaggiatreno" = ps: with ps; [  ];
+    "viaggiatreno.sensor" = ps: with ps; [  ];
+    "vizio" = ps: with ps; [  ];
+    "vizio.media_player" = ps: with ps; [  ];
+    "vlc" = ps: with ps; [  ];
+    "vlc.media_player" = ps: with ps; [  ];
+    "voicerss" = ps: with ps; [  ];
+    "voicerss.tts" = ps: with ps; [  ];
+    "volkszaehler" = ps: with ps; [  ];
+    "volkszaehler.sensor" = ps: with ps; [  ];
+    "volumio" = ps: with ps; [  ];
+    "volumio.media_player" = ps: with ps; [  ];
     "volvooncall" = ps: with ps; [  ];
     "volvooncall.binary_sensor" = ps: with ps; [  ];
     "volvooncall.device_tracker" = ps: with ps; [  ];
@@ -1511,25 +1962,22 @@
     "volvooncall.sensor" = ps: with ps; [  ];
     "volvooncall.switch" = ps: with ps; [  ];
     "vultr" = ps: with ps; [ vultr ];
+    "vultr.binary_sensor" = ps: with ps; [ vultr ];
+    "vultr.sensor" = ps: with ps; [ vultr ];
+    "vultr.switch" = ps: with ps; [ vultr ];
     "w800rf32" = ps: with ps; [  ];
     "w800rf32.binary_sensor" = ps: with ps; [  ];
     "wake_on_lan" = ps: with ps; [ wakeonlan ];
+    "wake_on_lan.switch" = ps: with ps; [ wakeonlan ];
+    "waqi" = ps: with ps; [  ];
+    "waqi.sensor" = ps: with ps; [  ];
     "water_heater" = ps: with ps; [  ];
-    "water_heater.demo" = ps: with ps; [  ];
-    "water_heater.econet" = ps: with ps; [  ];
     "waterfurnace" = ps: with ps; [  ];
     "waterfurnace.sensor" = ps: with ps; [  ];
     "watson_iot" = ps: with ps; [  ];
+    "waze_travel_time" = ps: with ps; [  ];
+    "waze_travel_time.sensor" = ps: with ps; [ WazeRouteCalculator ];
     "weather" = ps: with ps; [  ];
-    "weather.bom" = ps: with ps; [  ];
-    "weather.buienradar" = ps: with ps; [  ];
-    "weather.darksky" = ps: with ps; [ python-forecastio ];
-    "weather.demo" = ps: with ps; [  ];
-    "weather.met" = ps: with ps; [  ];
-    "weather.metoffice" = ps: with ps; [  ];
-    "weather.openweathermap" = ps: with ps; [ pyowm ];
-    "weather.yweather" = ps: with ps; [ yahooweather ];
-    "weather.zamg" = ps: with ps; [  ];
     "webhook" = ps: with ps; [ aiohttp-cors ];
     "weblink" = ps: with ps; [  ];
     "webostv" = ps: with ps; [  ];
@@ -1545,11 +1993,14 @@
     "websocket_api.http" = ps: with ps; [  ];
     "websocket_api.messages" = ps: with ps; [  ];
     "websocket_api.permissions" = ps: with ps; [  ];
+    "websocket_api.sensor" = ps: with ps; [  ];
     "wemo" = ps: with ps; [  ];
     "wemo.binary_sensor" = ps: with ps; [  ];
     "wemo.fan" = ps: with ps; [  ];
     "wemo.light" = ps: with ps; [  ];
     "wemo.switch" = ps: with ps; [  ];
+    "whois" = ps: with ps; [  ];
+    "whois.sensor" = ps: with ps; [  ];
     "wink" = ps: with ps; [  ];
     "wink.alarm_control_panel" = ps: with ps; [  ];
     "wink.binary_sensor" = ps: with ps; [  ];
@@ -1566,7 +2017,30 @@
     "wirelesstag.binary_sensor" = ps: with ps; [  ];
     "wirelesstag.sensor" = ps: with ps; [  ];
     "wirelesstag.switch" = ps: with ps; [  ];
+    "workday" = ps: with ps; [  ];
+    "workday.binary_sensor" = ps: with ps; [  ];
+    "worldclock" = ps: with ps; [  ];
+    "worldclock.sensor" = ps: with ps; [  ];
+    "worldtidesinfo" = ps: with ps; [  ];
+    "worldtidesinfo.sensor" = ps: with ps; [  ];
+    "worxlandroid" = ps: with ps; [  ];
+    "worxlandroid.sensor" = ps: with ps; [  ];
+    "wsdot" = ps: with ps; [  ];
+    "wsdot.sensor" = ps: with ps; [  ];
+    "wunderground" = ps: with ps; [  ];
+    "wunderground.sensor" = ps: with ps; [  ];
     "wunderlist" = ps: with ps; [  ];
+    "x10" = ps: with ps; [  ];
+    "x10.light" = ps: with ps; [  ];
+    "xbox_live" = ps: with ps; [  ];
+    "xbox_live.sensor" = ps: with ps; [  ];
+    "xeoma" = ps: with ps; [  ];
+    "xeoma.camera" = ps: with ps; [  ];
+    "xfinity" = ps: with ps; [  ];
+    "xfinity.device_tracker" = ps: with ps; [  ];
+    "xiaomi" = ps: with ps; [  ];
+    "xiaomi.camera" = ps: with ps; [ ha-ffmpeg ];
+    "xiaomi.device_tracker" = ps: with ps; [  ];
     "xiaomi_aqara" = ps: with ps; [  ];
     "xiaomi_aqara.binary_sensor" = ps: with ps; [  ];
     "xiaomi_aqara.cover" = ps: with ps; [  ];
@@ -1582,13 +2056,46 @@
     "xiaomi_miio.sensor" = ps: with ps; [ construct ];
     "xiaomi_miio.switch" = ps: with ps; [ construct ];
     "xiaomi_miio.vacuum" = ps: with ps; [ construct ];
+    "xiaomi_tv" = ps: with ps; [  ];
+    "xiaomi_tv.media_player" = ps: with ps; [  ];
+    "xmpp" = ps: with ps; [  ];
+    "xmpp.notify" = ps: with ps; [ slixmpp ];
     "xs1" = ps: with ps; [  ];
     "xs1.climate" = ps: with ps; [  ];
     "xs1.sensor" = ps: with ps; [  ];
     "xs1.switch" = ps: with ps; [  ];
+    "yale_smart_alarm" = ps: with ps; [  ];
+    "yale_smart_alarm.alarm_control_panel" = ps: with ps; [  ];
+    "yamaha" = ps: with ps; [  ];
+    "yamaha.media_player" = ps: with ps; [  ];
+    "yamaha_musiccast" = ps: with ps; [  ];
+    "yamaha_musiccast.media_player" = ps: with ps; [  ];
+    "yandextts" = ps: with ps; [  ];
+    "yandextts.tts" = ps: with ps; [  ];
+    "yeelight" = ps: with ps; [  ];
+    "yeelight.binary_sensor" = ps: with ps; [  ];
+    "yeelight.light" = ps: with ps; [  ];
+    "yeelightsunflower" = ps: with ps; [  ];
+    "yeelightsunflower.light" = ps: with ps; [  ];
+    "yessssms" = ps: with ps; [  ];
+    "yessssms.notify" = ps: with ps; [  ];
+    "yi" = ps: with ps; [  ];
+    "yi.camera" = ps: with ps; [ ha-ffmpeg ];
+    "yr" = ps: with ps; [  ];
+    "yr.sensor" = ps: with ps; [ xmltodict ];
+    "yweather" = ps: with ps; [  ];
+    "yweather.sensor" = ps: with ps; [ yahooweather ];
+    "yweather.weather" = ps: with ps; [ yahooweather ];
     "zabbix" = ps: with ps; [  ];
     "zabbix.sensor" = ps: with ps; [  ];
+    "zamg" = ps: with ps; [  ];
+    "zamg.sensor" = ps: with ps; [  ];
+    "zamg.weather" = ps: with ps; [  ];
+    "zengge" = ps: with ps; [  ];
+    "zengge.light" = ps: with ps; [  ];
     "zeroconf" = ps: with ps; [ aiohttp-cors zeroconf ];
+    "zestimate" = ps: with ps; [  ];
+    "zestimate.sensor" = ps: with ps; [ xmltodict ];
     "zha" = ps: with ps; [  ];
     "zha.api" = ps: with ps; [  ];
     "zha.binary_sensor" = ps: with ps; [  ];
@@ -1601,11 +2108,15 @@
     "zha.light" = ps: with ps; [  ];
     "zha.sensor" = ps: with ps; [  ];
     "zha.switch" = ps: with ps; [  ];
+    "zhong_hong" = ps: with ps; [  ];
+    "zhong_hong.climate" = ps: with ps; [  ];
     "zigbee" = ps: with ps; [  ];
     "zigbee.binary_sensor" = ps: with ps; [  ];
     "zigbee.light" = ps: with ps; [  ];
     "zigbee.sensor" = ps: with ps; [  ];
     "zigbee.switch" = ps: with ps; [  ];
+    "ziggo_mediabox_xl" = ps: with ps; [  ];
+    "ziggo_mediabox_xl.media_player" = ps: with ps; [  ];
     "zone" = ps: with ps; [  ];
     "zone.config_flow" = ps: with ps; [  ];
     "zone.const" = ps: with ps; [  ];
diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix
index 9e5fb6bfb008..85aa4caf0833 100644
--- a/pkgs/servers/home-assistant/default.nix
+++ b/pkgs/servers/home-assistant/default.nix
@@ -48,8 +48,8 @@ let
       "3ef3092145e9b70e3ddd2c7ad59bdd0252a94dfe3949721633e41344de00a6bf")
     (mkOverride "requests" "2.21.0"
       "502a824f31acdacb3a35b6690b5fbf0bc41d63a24a45c4004352b0242707598e")
-    (mkOverride "ruamel_yaml" "0.15.88"
-      "ac56193c47a31c9efa151064a9e921865cdad0f7a991d229e7197e12fe8e0cd7")
+    (mkOverride "ruamel_yaml" "0.15.89"
+      "86d034aa9e2ab3eacc5f75f5cd6a469a2af533b6d9e60ea92edbba540d21b9b7")
     (mkOverride "voluptuous" "0.11.5"
       "567a56286ef82a9d7ae0628c5842f65f516abcb496e74f3f59f1d7b28df314ef")
     (mkOverride "voluptuous-serialize" "2.1.0"
@@ -97,7 +97,7 @@ let
   extraBuildInputs = extraPackages py.pkgs;
 
   # Don't forget to run parse-requirements.py after updating
-  hassVersion = "0.90.2";
+  hassVersion = "0.91.1";
 
 in with py.pkgs; buildPythonApplication rec {
   pname = "homeassistant";
@@ -112,7 +112,7 @@ in with py.pkgs; buildPythonApplication rec {
     owner = "home-assistant";
     repo = "home-assistant";
     rev = version;
-    sha256 = "0byikidvrvx8nxgddhpqz609rxb91j1kcppziv4ibb57g6lj7iwx";
+    sha256 = "1y2sv9qq7zmb85n2f5b3csnc60xi87ccpkmhz8ii9gkjw6swikyh";
   };
 
   propagatedBuildInputs = [
@@ -133,7 +133,7 @@ in with py.pkgs; buildPythonApplication rec {
     # Some basic components should be tested however
     py.test \
       tests/components/{api,config,configurator,demo,discovery,frontend,group,history,history_graph} \
-      tests/components/{http,init,introduction,logger,script,shell_command,system_log,websocket_api}
+      tests/components/{homeassistant,http,introduction,logger,script,shell_command,system_log,websocket_api}
   '';
 
   makeWrapperArgs = lib.optional skipPip "--add-flags --skip-pip";
diff --git a/pkgs/servers/home-assistant/frontend.nix b/pkgs/servers/home-assistant/frontend.nix
index a011e35ae64e..f8349c24f7fb 100644
--- a/pkgs/servers/home-assistant/frontend.nix
+++ b/pkgs/servers/home-assistant/frontend.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "home-assistant-frontend";
-  version = "20190321.0";
+  version = "20190331.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0sk96mnmvsbcqjjcrlgfsxkywms0zmajjgn3ibvk4sfn5wn53bg7";
+    sha256 = "2d266a4d3d31af9a50debb99b0e9e9650044698f9157753bec785785057264cf";
   };
 
   propagatedBuildInputs = [ user-agents ];
diff --git a/pkgs/tools/misc/tlp/default.nix b/pkgs/tools/misc/tlp/default.nix
index 39d3ea1c2086..2cdb8aff472e 100644
--- a/pkgs/tools/misc/tlp/default.nix
+++ b/pkgs/tools/misc/tlp/default.nix
@@ -1,6 +1,7 @@
 { stdenv, lib, fetchFromGitHub, perl, makeWrapper, file, systemd, iw, rfkill
 , hdparm, ethtool, inetutils , kmod, pciutils, smartmontools
 , x86_energy_perf_policy, gawk, gnugrep, coreutils, utillinux
+, checkbashisms, shellcheck
 , enableRDW ? false, networkmanager
 }:
 
@@ -14,28 +15,31 @@ let
 
 in stdenv.mkDerivation rec {
   name = "tlp-${version}";
-  version = "1.1";
+  version = "1.2.1";
 
   src = fetchFromGitHub {
-        owner = "linrunner";
-        repo = "TLP";
-        rev = "${version}";
-        sha256 = "01bhb9hdsck1g2s5jvafr3ywml9k2qz7x2cf42a3z8g5d23pdfpy";
-      };
+    owner = "linrunner";
+    repo = "TLP";
+    rev = version;
+    sha256 = "1msldl6y8fpvxa9p87lv3hvgxwk2vpiahqmapq485ihdjkshc558";
+  };
+
+  outRef = placeholder "out";
 
-  makeFlags = [ "DESTDIR=$(out)"
-                "TLP_SBIN=$(out)/bin"
-                "TLP_BIN=$(out)/bin"
-                "TLP_TLIB=$(out)/share/tlp-pm"
-                "TLP_PLIB=$(out)/lib/pm-utils"
-                "TLP_ULIB=$(out)/lib/udev"
-                "TLP_NMDSP=$(out)/etc/NetworkManager/dispatcher.d"
-                "TLP_SHCPL=$(out)/share/bash-completion/completions"
-                "TLP_MAN=$(out)/share/man"
+  makeFlags = [
+    "DESTDIR=${outRef}"
+    "TLP_SBIN=${outRef}/bin"
+    "TLP_BIN=${outRef}/bin"
+    "TLP_TLIB=${outRef}/share/tlp"
+    "TLP_FLIB=${outRef}/share/tlp/func.d"
+    "TLP_ULIB=${outRef}/lib/udev"
+    "TLP_NMDSP=${outRef}/etc/NetworkManager/dispatcher.d"
+    "TLP_SHCPL=${outRef}/share/bash-completion/completions"
+    "TLP_MAN=${outRef}/share/man"
+    "TLP_META=${outRef}/share/metainfo"
 
-                "TLP_NO_INIT=1"
-                "TLP_NO_PMUTILS=1"
-              ];
+    "TLP_NO_INIT=1"
+  ];
 
   nativeBuildInputs = [ makeWrapper file ];
 
@@ -43,6 +47,14 @@ in stdenv.mkDerivation rec {
 
   installTargets = [ "install-tlp" "install-man" ] ++ stdenv.lib.optional enableRDW "install-rdw";
 
+  checkInputs = [
+    checkbashisms
+    shellcheck
+  ];
+
+  doCheck = true;
+  checkTarget = [ "checkall" ];
+
   postInstall = ''
     cp -r $out/$out/* $out
     rm -rf $out/$(echo "$NIX_STORE" | cut -d "/" -f2)
diff --git a/pkgs/tools/misc/vdirsyncer/default.nix b/pkgs/tools/misc/vdirsyncer/default.nix
index af8d0862d1bb..603492718d0e 100644
--- a/pkgs/tools/misc/vdirsyncer/default.nix
+++ b/pkgs/tools/misc/vdirsyncer/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, python3Packages, fetchFromGitHub, fetchpatch, glibcLocales, rustPlatform, pkgconfig, openssl, Security }:
+{ stdenv, python3Packages, fetchFromGitHub, fetchpatch, rustPlatform, pkgconfig, openssl, Security }:
 
 # Packaging documentation at:
 # https://github.com/untitaker/vdirsyncer/blob/master/docs/packaging.rst
@@ -32,9 +32,9 @@ python3Packages.buildPythonApplication rec {
     shippai
   ];
 
-  buildInputs = with python3Packages; [ setuptools_scm ];
+  nativeBuildInputs = with python3Packages; [ setuptools_scm ];
 
-  checkInputs = with python3Packages; [ hypothesis pytest pytest-localserver pytest-subtesthack ] ++ [ glibcLocales ];
+  checkInputs = with python3Packages; [ hypothesis pytest pytest-localserver pytest-subtesthack ];
 
   patches = [
     # Fixes for hypothesis: https://github.com/pimutils/vdirsyncer/pull/779
@@ -66,11 +66,8 @@ python3Packages.buildPythonApplication rec {
     ln -s ${native}/lib/libvdirsyncer_rustext* rust/target/release/
   '';
 
-  LC_ALL = "en_US.utf8";
-
   checkPhase = ''
     rm -rf vdirsyncer
-    export PYTHONPATH=$out/${python3Packages.python.sitePackages}:$PYTHONPATH
     make DETERMINISTIC_TESTS=true test
   '';
 
@@ -78,7 +75,6 @@ python3Packages.buildPythonApplication rec {
     homepage = https://github.com/pimutils/vdirsyncer;
     description = "Synchronize calendars and contacts";
     maintainers = with maintainers; [ matthiasbeyer ];
-    platforms = platforms.all;
     license = licenses.mit;
   };
 }
diff --git a/pkgs/tools/networking/dnscrypt-proxy/2.x/default.nix b/pkgs/tools/networking/dnscrypt-proxy/2.x/default.nix
index a7b564be868e..7cedd0f23b41 100644
--- a/pkgs/tools/networking/dnscrypt-proxy/2.x/default.nix
+++ b/pkgs/tools/networking/dnscrypt-proxy/2.x/default.nix
@@ -2,15 +2,15 @@
 
 buildGoPackage rec {
   name = "dnscrypt-proxy2-${version}";
-  version = "2.0.21";
+  version = "2.0.22";
 
   goPackagePath = "github.com/jedisct1/dnscrypt-proxy";
 
   src = fetchFromGitHub {
     owner = "jedisct1";
     repo = "dnscrypt-proxy";
-    rev = "${version}";
-    sha256 = "00sz5gn4l56rp4xcvxfpq6c64inpgzbwpqy1yc5sima6ijrayi9g";
+    rev = version;
+    sha256 = "0rmiyqxbbc3gjnfvyggf2lckckliiijq528993gv0n875r7ahkix";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/tools/system/rsyslog/default.nix b/pkgs/tools/system/rsyslog/default.nix
index 0ce6cb12a638..a907225914c4 100644
--- a/pkgs/tools/system/rsyslog/default.nix
+++ b/pkgs/tools/system/rsyslog/default.nix
@@ -11,11 +11,11 @@ let
   mkFlag = cond: name: if cond then "--enable-${name}" else "--disable-${name}";
 in
 stdenv.mkDerivation rec {
-  name = "rsyslog-8.39.0";
+  name = "rsyslog-8.1903.0";
 
   src = fetchurl {
     url = "https://www.rsyslog.com/files/download/rsyslog/${name}.tar.gz";
-    sha256 = "1d3ac448b8gj58vg7n99ffv2rvpnhhin1ni5vyby73aksvz9c7y7";
+    sha256 = "0vq50k9n3dlb02431zy2c0vhzvb4x27bp887d1xlrinf7m4kmlnh";
   };
 
   #patches = [ ./fix-gnutls-detection.patch ];
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index cea186d5f776..640c3803b050 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -16771,6 +16771,8 @@ in
 
   cuneiform = callPackage ../tools/graphics/cuneiform {};
 
+  curseradio = callPackage ../applications/audio/curseradio { };
+
   cutecom = libsForQt5.callPackage ../tools/misc/cutecom { };
 
   cutegram =
diff --git a/pkgs/top-level/dotnet-packages.nix b/pkgs/top-level/dotnet-packages.nix
index bcfef9bdad88..b8aa2cb9bb99 100644
--- a/pkgs/top-level/dotnet-packages.nix
+++ b/pkgs/top-level/dotnet-packages.nix
@@ -108,6 +108,13 @@ let self = dotnetPackages // overrides; dotnetPackages = with self; {
     outputFiles = [ "*" ];
   };
 
+  FsLexYaccRuntime = fetchNuGet {
+    baseName = "FsLexYacc.Runtime";
+    version = "6.1.0";
+    sha256 = "18vrx4lxsn4hkfishg4abv0d4q21dsph0bm4mdq5z8afaypp5cr7";
+    outputFiles = [ "lib/net40/*" ];
+  };
+
   FsPickler = fetchNuGet {
     baseName = "FsPickler";
     version = "1.2.9";