summary refs log tree commit diff
path: root/pkgs/servers
diff options
context:
space:
mode:
authorRobert Schütz <rschuetz17@gmail.com>2018-02-27 10:34:46 +0100
committerGitHub <noreply@github.com>2018-02-27 10:34:46 +0100
commit4d7c21c35bebe76d7c48de7f987b625979e81205 (patch)
treed6598f71a52f148b26fba2aa38ea09d7eff4888a /pkgs/servers
parentd141ab33567a17a0850c49b56fdaffd6fbadbf88 (diff)
parentec4575f7c149a675d9236b744caeec67a14ad3c9 (diff)
downloadnixlib-4d7c21c35bebe76d7c48de7f987b625979e81205.tar
nixlib-4d7c21c35bebe76d7c48de7f987b625979e81205.tar.gz
nixlib-4d7c21c35bebe76d7c48de7f987b625979e81205.tar.bz2
nixlib-4d7c21c35bebe76d7c48de7f987b625979e81205.tar.lz
nixlib-4d7c21c35bebe76d7c48de7f987b625979e81205.tar.xz
nixlib-4d7c21c35bebe76d7c48de7f987b625979e81205.tar.zst
nixlib-4d7c21c35bebe76d7c48de7f987b625979e81205.zip
Merge pull request #35835 from peterhoeg/f/hass
home-assistant: sort components when writing them out
Diffstat (limited to 'pkgs/servers')
-rw-r--r--pkgs/servers/home-assistant/component-packages.nix724
-rwxr-xr-xpkgs/servers/home-assistant/parse-requirements.py3
2 files changed, 364 insertions, 363 deletions
diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix
index 70658cdc10e1..2b031f33555d 100644
--- a/pkgs/servers/home-assistant/component-packages.nix
+++ b/pkgs/servers/home-assistant/component-packages.nix
@@ -4,435 +4,435 @@
 {
   version = "0.63.3";
   components = {
-    "nuimo_controller" = ps: with ps; [  ];
-    "bbb_gpio" = ps: with ps; [  ];
-    "doorbird" = ps: with ps; [  ];
-    "isy994" = ps: with ps; [  ];
-    "notify.html5" = ps: with ps; [ pyjwt ];
-    "sensor.mvglive" = ps: with ps; [  ];
-    "arduino" = ps: with ps; [  ];
-    "xiaomi_aqara" = ps: with ps; [  ];
-    "rpi_gpio" = ps: with ps; [  ];
-    "remember_the_milk" = ps: with ps; [ httplib2 ];
-    "media_player.sonos" = ps: with ps; [  ];
-    "sensor.travisci" = ps: with ps; [  ];
-    "notify.twitter" = ps: with ps; [  ];
-    "notify.yessssms" = ps: with ps; [  ];
     "abode" = ps: with ps; [  ];
-    "device_tracker.automatic" = ps: with ps; [  ];
-    "sensor.dnsip" = ps: with ps; [ aiodns ];
-    "emulated_hue" = ps: with ps; [ aiohttp-cors ];
-    "http" = ps: with ps; [ aiohttp-cors ];
-    "sensor.imap" = ps: with ps; [ aioimaplib ];
-    "light.lifx" = ps: with ps; [  ];
-    "scene.hunterdouglas_powerview" = ps: with ps; [  ];
+    "ads" = ps: with ps; [  ];
+    "alarm_control_panel.alarmdotcom" = ps: with ps; [  ];
+    "alarm_control_panel.concord232" = ps: with ps; [  ];
+    "alarm_control_panel.egardia" = ps: with ps; [  ];
+    "alarm_control_panel.ialarm" = ps: with ps; [  ];
+    "alarm_control_panel.nx584" = ps: with ps; [  ];
+    "alarm_control_panel.simplisafe" = ps: with ps; [  ];
+    "alarm_control_panel.totalconnect" = ps: with ps; [  ];
     "alarmdecoder" = ps: with ps; [  ];
-    "sensor.alpha_vantage" = ps: with ps; [  ];
     "amcrest" = ps: with ps; [  ];
-    "media_player.anthemav" = ps: with ps; [  ];
+    "android_ip_webcam" = ps: with ps; [  ];
     "apcupsd" = ps: with ps; [  ];
-    "notify.apns" = ps: with ps; [  ];
+    "apple_tv" = ps: with ps; [  ];
+    "arduino" = ps: with ps; [  ];
+    "arlo" = ps: with ps; [  ];
     "asterisk_mbox" = ps: with ps; [  ];
-    "light.avion" = ps: with ps; [  ];
     "axis" = ps: with ps; [  ];
-    "tts.baidu" = ps: with ps; [  ];
-    "sensor.modem_callerid" = ps: with ps; [  ];
-    "sensor.linux_battery" = ps: with ps; [ batinfo ];
-    "sensor.eddystone_temperature" = ps: with ps; [  ];
-    "device_tracker.linksys_ap" = ps: with ps; [ beautifulsoup4 ];
-    "sensor.geizhals" = ps: with ps; [ beautifulsoup4 ];
-    "sensor.scrape" = ps: with ps; [ beautifulsoup4 ];
-    "sensor.sytadin" = ps: with ps; [ beautifulsoup4 ];
-    "zha" = ps: with ps; [  ];
+    "bbb_gpio" = ps: with ps; [  ];
+    "binary_sensor.concord232" = ps: with ps; [  ];
+    "binary_sensor.flic" = ps: with ps; [  ];
+    "binary_sensor.hikvision" = ps: with ps; [  ];
+    "binary_sensor.iss" = ps: with ps; [  ];
+    "binary_sensor.nx584" = ps: with ps; [  ];
+    "binary_sensor.tapsaff" = ps: with ps; [  ];
+    "binary_sensor.trend" = ps: with ps; [ numpy ];
+    "binary_sensor.workday" = ps: with ps; [  ];
     "blink" = ps: with ps; [  ];
-    "light.blinksticklight" = ps: with ps; [ BlinkStick ];
-    "light.blinkt" = ps: with ps; [  ];
-    "sensor.bitcoin" = ps: with ps; [  ];
-    "light.decora" = ps: with ps; [  ];
-    "sensor.bme680" = ps: with ps; [  ];
-    "notify.aws_lambda" = ps: with ps; [ boto3 ];
-    "notify.aws_sns" = ps: with ps; [ boto3 ];
-    "notify.aws_sqs" = ps: with ps; [ boto3 ];
-    "tts.amazon_polly" = ps: with ps; [ boto3 ];
-    "sensor.broadlink" = ps: with ps; [  ];
-    "switch.broadlink" = ps: with ps; [  ];
-    "sensor.buienradar" = ps: with ps; [  ];
-    "weather.buienradar" = ps: with ps; [  ];
     "calendar.caldav" = ps: with ps; [  ];
-    "notify.ciscospark" = ps: with ps; [  ];
+    "calendar.todoist" = ps: with ps; [ todoist ];
+    "camera.foscam" = ps: with ps; [  ];
+    "camera.onvif" = ps: with ps; [  ];
+    "camera.synology" = ps: with ps; [  ];
+    "camera.uvc" = ps: with ps; [  ];
+    "camera.xeoma" = ps: with ps; [  ];
+    "canary" = ps: with ps; [  ];
+    "climate.daikin" = ps: with ps; [  ];
+    "climate.econet" = ps: with ps; [  ];
+    "climate.ephember" = ps: with ps; [  ];
+    "climate.eq3btsmart" = ps: with ps; [  ];
+    "climate.flexit" = ps: with ps; [  ];
+    "climate.heatmiser" = ps: with ps; [  ];
+    "climate.honeywell" = ps: with ps; [  ];
+    "climate.oem" = ps: with ps; [  ];
+    "climate.proliphix" = ps: with ps; [  ];
+    "climate.radiotherm" = ps: with ps; [  ];
+    "climate.sensibo" = ps: with ps; [  ];
+    "climate.touchline" = ps: with ps; [  ];
+    "climate.venstar" = ps: with ps; [  ];
+    "cloud" = ps: with ps; [  ];
     "coinbase" = ps: with ps; [  ];
-    "sensor.coinmarketcap" = ps: with ps; [  ];
-    "alarm_control_panel.concord232" = ps: with ps; [  ];
-    "binary_sensor.concord232" = ps: with ps; [  ];
-    "sensor.crimereports" = ps: with ps; [  ];
+    "comfoconnect" = ps: with ps; [  ];
+    "conversation" = ps: with ps; [  ];
+    "cover.myq" = ps: with ps; [  ];
+    "daikin" = ps: with ps; [  ];
     "datadog" = ps: with ps; [ datadog ];
-    "sensor.metoffice" = ps: with ps; [  ];
-    "weather.metoffice" = ps: with ps; [  ];
-    "light.decora_wifi" = ps: with ps; [  ];
+    "deconz" = ps: with ps; [  ];
+    "device_tracker.aruba" = ps: with ps; [ pexpect ];
+    "device_tracker.asuswrt" = ps: with ps; [ pexpect ];
+    "device_tracker.automatic" = ps: with ps; [  ];
+    "device_tracker.bbox" = ps: with ps; [  ];
+    "device_tracker.bluetooth_le_tracker" = ps: with ps; [  ];
+    "device_tracker.bluetooth_tracker" = ps: with ps; [  ];
+    "device_tracker.cisco_ios" = ps: with ps; [ pexpect ];
+    "device_tracker.fritz" = ps: with ps; [  ];
+    "device_tracker.icloud" = ps: with ps; [  ];
+    "device_tracker.linksys_ap" = ps: with ps; [ beautifulsoup4 ];
+    "device_tracker.mikrotik" = ps: with ps; [  ];
+    "device_tracker.netgear" = ps: with ps; [  ];
+    "device_tracker.nmap_tracker" = ps: with ps; [  ];
+    "device_tracker.owntracks" = ps: with ps; [ libnacl ];
+    "device_tracker.owntracks_http" = ps: with ps; [ libnacl ];
+    "device_tracker.snmp" = ps: with ps; [ pysnmp ];
+    "device_tracker.tile" = ps: with ps; [  ];
+    "device_tracker.trackr" = 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 ];
-    "sensor.deluge" = ps: with ps; [  ];
-    "switch.deluge" = ps: with ps; [  ];
-    "media_player.denonavr" = ps: with ps; [  ];
-    "media_player.directv" = ps: with ps; [  ];
-    "sensor.discogs" = ps: with ps; [ discogs_client ];
-    "notify.discord" = ps: with ps; [  ];
-    "updater" = ps: with ps; [ distro ];
-    "switch.digitalloggers" = ps: with ps; [  ];
-    "notify.xmpp" = ps: with ps; [ pyasn1-modules pyasn1 sleekxmpp ];
-    "sensor.dovado" = ps: with ps; [  ];
-    "sensor.dsmr" = ps: with ps; [  ];
+    "digital_ocean" = ps: with ps; [ digital-ocean ];
+    "discovery" = ps: with ps; [ netdisco ];
+    "dominos" = ps: with ps; [  ];
+    "doorbird" = ps: with ps; [  ];
     "dweet" = ps: with ps; [  ];
-    "sensor.dweet" = ps: with ps; [  ];
-    "sensor.eliqonline" = ps: with ps; [  ];
+    "dyson" = ps: with ps; [  ];
+    "ecobee" = ps: with ps; [  ];
+    "eight_sleep" = ps: with ps; [  ];
+    "emulated_hue" = ps: with ps; [ aiohttp-cors ];
     "enocean" = ps: with ps; [  ];
-    "sensor.envirophat" = ps: with ps; [  ];
-    "sensor.season" = ps: with ps; [ ephem ];
-    "keyboard_remote" = ps: with ps; [  ];
-    "climate.honeywell" = ps: with ps; [  ];
-    "image_processing.dlib_face_detect" = ps: with ps; [  ];
-    "image_processing.dlib_face_identify" = ps: with ps; [  ];
-    "sensor.fastdotcom" = ps: with ps; [  ];
-    "sensor.fedex" = ps: with ps; [  ];
+    "envisalink" = ps: with ps; [  ];
+    "fan.xiaomi_miio" = ps: with ps; [  ];
     "feedreader" = ps: with ps; [ feedparser ];
-    "sensor.geo_rss_events" = ps: with ps; [ feedparser ];
-    "sensor.fitbit" = ps: with ps; [  ];
-    "sensor.fixer" = ps: with ps; [  ];
-    "light.flux_led" = ps: with ps; [  ];
-    "notify.free_mobile" = ps: with ps; [  ];
-    "device_tracker.fritz" = ps: with ps; [  ];
-    "sensor.fritzbox_callmonitor" = ps: with ps; [  ];
-    "sensor.fritzbox_netmonitor" = ps: with ps; [  ];
-    "switch.fritzdect" = ps: with ps; [  ];
-    "media_player.frontier_silicon" = ps: with ps; [  ];
-    "conversation" = ps: with ps; [  ];
-    "tts.google" = ps: with ps; [  ];
-    "device_tracker.bluetooth_le_tracker" = ps: with ps; [  ];
-    "sensor.gearbest" = ps: with ps; [  ];
-    "sensor.gitter" = ps: with ps; [  ];
-    "notify.gntp" = ps: with ps; [  ];
-    "google" = ps: with ps; [ google_api_python_client oauth2client ];
-    "sensor.google_travel_time" = ps: with ps; [  ];
-    "sensor.gpsd" = ps: with ps; [  ];
-    "light.greenwave" = ps: with ps; [  ];
-    "media_player.gstreamer" = ps: with ps; [  ];
     "ffmpeg" = ps: with ps; [  ];
-    "media_player.philips_js" = ps: with ps; [  ];
-    "mqtt.server" = ps: with ps; [ hbmqtt ];
-    "climate.heatmiser" = ps: with ps; [  ];
-    "switch.hikvisioncam" = ps: with ps; [  ];
-    "notify.hipchat" = ps: with ps; [  ];
-    "binary_sensor.workday" = ps: with ps; [  ];
     "frontend" = ps: with ps; [ user-agents ];
-    "camera.onvif" = ps: with ps; [  ];
-    "sensor.dht" = ps: with ps; [  ];
-    "media_player.braviatv" = ps: with ps; [  ];
-    "media_player.spotify" = ps: with ps; [  ];
-    "netatmo" = ps: with ps; [  ];
-    "neato" = ps: with ps; [  ];
-    "sensor.sabnzbd" = ps: with ps; [  ];
-    "switch.anel_pwrctrl" = ps: with ps; [  ];
-    "switch.edimax" = ps: with ps; [  ];
-    "sensor.gtfs" = ps: with ps; [  ];
-    "binary_sensor.flic" = ps: with ps; [  ];
-    "media_player.lg_netcast" = ps: with ps; [  ];
-    "sensor.bh1750" = ps: with ps; [  ];
-    "sensor.bme280" = ps: with ps; [  ];
-    "sensor.htu21d" = ps: with ps; [  ];
-    "light.iglo" = ps: with ps; [  ];
+    "gc100" = ps: with ps; [  ];
+    "goalfeed" = ps: with ps; [  ];
+    "google" = ps: with ps; [ google_api_python_client oauth2client ];
+    "hdmi_cec" = ps: with ps; [  ];
+    "hive" = ps: with ps; [  ];
+    "homematic" = ps: with ps; [ pyhomematic ];
+    "http" = ps: with ps; [ aiohttp-cors ];
+    "hue" = ps: with ps; [  ];
+    "ifttt" = ps: with ps; [  ];
     "ihc" = ps: with ps; [  ];
+    "image_processing.dlib_face_detect" = ps: with ps; [  ];
+    "image_processing.dlib_face_identify" = ps: with ps; [  ];
+    "image_processing.opencv" = ps: with ps; [ numpy ];
     "influxdb" = ps: with ps; [ influxdb ];
-    "sensor.influxdb" = ps: with ps; [ influxdb ];
     "insteon_local" = ps: with ps; [  ];
     "insteon_plm" = ps: with ps; [  ];
-    "verisure" = ps: with ps; [  ];
-    "media_player.kodi" = ps: with ps; [ jsonrpc-async jsonrpc-websocket ];
-    "notify.kodi" = ps: with ps; [ jsonrpc-async ];
-    "device_tracker.owntracks" = ps: with ps; [ libnacl ];
-    "device_tracker.owntracks_http" = ps: with ps; [ libnacl ];
-    "dyson" = ps: with ps; [  ];
-    "camera.foscam" = ps: with ps; [  ];
-    "device_tracker.mikrotik" = ps: with ps; [  ];
-    "media_player.soundtouch" = ps: with ps; [ libsoundtouch ];
+    "iota" = ps: with ps; [  ];
+    "isy994" = ps: with ps; [  ];
+    "joaoapps_join" = ps: with ps; [  ];
+    "juicenet" = ps: with ps; [  ];
+    "keyboard" = ps: with ps; [  ];
+    "keyboard_remote" = ps: with ps; [  ];
+    "kira" = ps: with ps; [  ];
+    "knx" = ps: with ps; [  ];
+    "lametric" = 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.flux_led" = ps: with ps; [  ];
+    "light.greenwave" = ps: with ps; [  ];
+    "light.iglo" = ps: with ps; [  ];
+    "light.lifx" = ps: with ps; [  ];
     "light.lifx_legacy" = ps: with ps; [  ];
-    "light.osramlightify" = ps: with ps; [  ];
     "light.limitlessled" = ps: with ps; [  ];
+    "light.mystrom" = ps: with ps; [  ];
+    "light.osramlightify" = ps: with ps; [  ];
+    "light.piglow" = ps: with ps; [  ];
+    "light.rpi_gpio_pwm" = ps: with ps; [  ];
+    "light.sensehat" = ps: with ps; [  ];
+    "light.tikteck" = ps: with ps; [  ];
+    "light.tplink" = ps: with ps; [  ];
+    "light.xiaomi_miio" = ps: with ps; [  ];
+    "light.yeelight" = ps: with ps; [  ];
+    "light.yeelightsunflower" = ps: with ps; [  ];
+    "light.zengge" = ps: with ps; [  ];
     "linode" = ps: with ps; [ linode-api ];
-    "media_player.liveboxplaytv" = ps: with ps; [  ];
-    "lametric" = ps: with ps; [  ];
-    "notify.lametric" = ps: with ps; [  ];
-    "sensor.luftdaten" = ps: with ps; [ luftdaten ];
-    "sensor.lyft" = ps: with ps; [  ];
-    "notify.matrix" = ps: with ps; [ matrix-client ];
+    "lirc" = ps: with ps; [  ];
+    "litejet" = ps: with ps; [  ];
+    "lock.nello" = ps: with ps; [  ];
+    "lock.nuki" = ps: with ps; [  ];
+    "lock.sesame" = ps: with ps; [  ];
+    "lutron" = ps: with ps; [  ];
+    "lutron_caseta" = ps: with ps; [  ];
     "maxcube" = ps: with ps; [  ];
-    "mercedesme" = ps: with ps; [  ];
-    "notify.message_bird" = ps: with ps; [  ];
-    "sensor.mfi" = ps: with ps; [  ];
-    "switch.mfi" = ps: with ps; [  ];
-    "sensor.miflora" = ps: with ps; [  ];
-    "upnp" = ps: with ps; [  ];
-    "sensor.mopar" = ps: with ps; [  ];
-    "tts" = ps: with ps; [ mutagen ];
-    "mychevy" = ps: with ps; [  ];
-    "mycroft" = ps: with ps; [  ];
-    "usps" = ps: with ps; [  ];
+    "media_extractor" = ps: with ps; [  ];
+    "media_player.anthemav" = ps: with ps; [  ];
+    "media_player.aquostv" = ps: with ps; [  ];
+    "media_player.bluesound" = ps: with ps; [ xmltodict ];
+    "media_player.braviatv" = ps: with ps; [  ];
+    "media_player.cast" = ps: with ps; [ PyChromecast ];
+    "media_player.clementine" = ps: with ps; [  ];
+    "media_player.cmus" = ps: with ps; [  ];
+    "media_player.denonavr" = ps: with ps; [  ];
+    "media_player.directv" = ps: with ps; [  ];
+    "media_player.dunehd" = ps: with ps; [  ];
+    "media_player.emby" = ps: with ps; [  ];
+    "media_player.frontier_silicon" = ps: with ps; [  ];
+    "media_player.gpmdp" = ps: with ps; [  ];
+    "media_player.gstreamer" = ps: with ps; [  ];
+    "media_player.kodi" = ps: with ps; [ jsonrpc-async jsonrpc-websocket ];
+    "media_player.lg_netcast" = ps: with ps; [  ];
+    "media_player.liveboxplaytv" = ps: with ps; [  ];
+    "media_player.mediaroom" = ps: with ps; [  ];
+    "media_player.monoprice" = ps: with ps; [  ];
+    "media_player.mpd" = ps: with ps; [ mpd2 ];
     "media_player.nad" = ps: with ps; [  ];
     "media_player.nadtcp" = ps: with ps; [  ];
-    "discovery" = ps: with ps; [ netdisco ];
-    "sensor.neurio_energy" = ps: with ps; [  ];
-    "sensor.nederlandse_spoorwegen" = ps: with ps; [  ];
-    "nuheat" = ps: with ps; [  ];
-    "binary_sensor.trend" = ps: with ps; [ numpy ];
-    "image_processing.opencv" = ps: with ps; [ numpy ];
-    "climate.oem" = ps: with ps; [  ];
     "media_player.onkyo" = ps: with ps; [ onkyo-eiscp ];
-    "sensor.openevse" = ps: with ps; [  ];
     "media_player.openhome" = ps: with ps; [  ];
-    "switch.orvibo" = ps: with ps; [  ];
-    "mqtt" = ps: with ps; [ paho-mqtt ];
-    "shiftr" = ps: with ps; [ paho-mqtt ];
-    "media_player.panasonic_viera" = ps: with ps; [  ];
-    "media_player.dunehd" = ps: with ps; [  ];
-    "device_tracker.aruba" = ps: with ps; [ pexpect ];
-    "device_tracker.asuswrt" = ps: with ps; [ pexpect ];
-    "device_tracker.cisco_ios" = ps: with ps; [ pexpect ];
-    "device_tracker.unifi_direct" = ps: with ps; [ pexpect ];
+    "media_player.panasonic_viera" = ps: with ps; [ wakeonlan ];
     "media_player.pandora" = ps: with ps; [ pexpect ];
-    "hue" = ps: with ps; [  ];
-    "rpi_pfio" = ps: with ps; [  ];
-    "light.piglow" = ps: with ps; [  ];
-    "pilight" = ps: with ps; [  ];
-    "dominos" = ps: with ps; [  ];
+    "media_player.philips_js" = ps: with ps; [  ];
     "media_player.plex" = ps: with ps; [  ];
-    "sensor.plex" = ps: with ps; [  ];
-    "sensor.mhz19" = ps: with ps; [  ];
-    "sensor.serial_pm" = ps: with ps; [  ];
-    "sensor.pocketcasts" = ps: with ps; [  ];
-    "climate.proliphix" = ps: with ps; [  ];
-    "prometheus" = ps: with ps; [  ];
-    "sensor.systemmonitor" = ps: with ps; [ psutil ];
-    "wink" = ps: with ps; [  ];
+    "media_player.roku" = 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; [  ];
+    "media_player.sonos" = ps: with ps; [  ];
+    "media_player.soundtouch" = ps: with ps; [ libsoundtouch ];
+    "media_player.spotify" = ps: with ps; [  ];
+    "media_player.vizio" = ps: with ps; [  ];
+    "media_player.vlc" = ps: with ps; [  ];
+    "media_player.webostv" = ps: with ps; [ websockets ];
+    "media_player.yamaha" = ps: with ps; [  ];
+    "media_player.yamaha_musiccast" = ps: with ps; [  ];
+    "media_player.ziggo_mediabox_xl" = ps: with ps; [  ];
+    "melissa" = ps: with ps; [  ];
+    "mercedesme" = ps: with ps; [  ];
+    "mochad" = ps: with ps; [  ];
+    "modbus" = ps: with ps; [  ];
+    "mqtt" = ps: with ps; [ paho-mqtt ];
+    "mqtt.server" = ps: with ps; [ hbmqtt ];
+    "mychevy" = ps: with ps; [  ];
+    "mycroft" = ps: with ps; [  ];
+    "mysensors" = ps: with ps; [  ];
+    "neato" = ps: with ps; [  ];
+    "nest" = ps: with ps; [  ];
+    "netatmo" = 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.discord" = ps: with ps; [  ];
+    "notify.free_mobile" = ps: with ps; [  ];
+    "notify.gntp" = ps: with ps; [  ];
+    "notify.hipchat" = ps: with ps; [  ];
+    "notify.html5" = ps: with ps; [ pyjwt ];
+    "notify.joaoapps_join" = ps: with ps; [  ];
+    "notify.kodi" = ps: with ps; [ jsonrpc-async ];
+    "notify.lametric" = ps: with ps; [  ];
+    "notify.mailgun" = ps: with ps; [  ];
+    "notify.matrix" = ps: with ps; [ matrix-client ];
+    "notify.message_bird" = ps: with ps; [  ];
     "notify.pushbullet" = ps: with ps; [ pushbullet ];
-    "sensor.pushbullet" = ps: with ps; [ pushbullet ];
     "notify.pushetta" = ps: with ps; [  ];
-    "light.rpi_gpio_pwm" = ps: with ps; [  ];
-    "canary" = ps: with ps; [  ];
-    "sensor.cpuspeed" = ps: with ps; [  ];
-    "melissa" = ps: with ps; [  ];
-    "camera.synology" = ps: with ps; [  ];
-    "hdmi_cec" = ps: with ps; [  ];
-    "light.tplink" = ps: with ps; [  ];
-    "switch.tplink" = ps: with ps; [  ];
+    "notify.pushover" = ps: with ps; [  ];
+    "notify.rocketchat" = ps: with ps; [  ];
+    "notify.sendgrid" = ps: with ps; [  ];
+    "notify.simplepush" = ps: with ps; [  ];
+    "notify.slack" = ps: with ps; [  ];
+    "notify.twitter" = ps: with ps; [  ];
+    "notify.webostv" = ps: with ps; [  ];
+    "notify.xmpp" = ps: with ps; [ pyasn1-modules pyasn1 sleekxmpp ];
+    "notify.yessssms" = ps: with ps; [  ];
+    "nuheat" = ps: with ps; [  ];
+    "nuimo_controller" = ps: with ps; [  ];
+    "pilight" = ps: with ps; [  ];
+    "prometheus" = ps: with ps; [  ];
+    "python_script" = ps: with ps; [  ];
+    "qwikswitch" = ps: with ps; [  ];
+    "rainbird" = ps: with ps; [  ];
+    "raincloud" = ps: with ps; [  ];
+    "raspihats" = ps: with ps; [  ];
+    "recorder" = ps: with ps; [ sqlalchemy ];
+    "remember_the_milk" = ps: with ps; [ httplib2 ];
+    "remote.harmony" = ps: with ps; [  ];
+    "remote.itach" = ps: with ps; [  ];
+    "remote.xiaomi_miio" = ps: with ps; [  ];
+    "rflink" = ps: with ps; [  ];
     "rfxtrx" = ps: with ps; [  ];
-    "sensor.tibber" = ps: with ps; [  ];
-    "switch.dlink" = ps: with ps; [  ];
-    "ads" = ps: with ps; [  ];
+    "ring" = ps: with ps; [  ];
+    "rpi_gpio" = ps: with ps; [  ];
+    "rpi_pfio" = ps: with ps; [  ];
+    "satel_integra" = ps: with ps; [  ];
+    "scene.hunterdouglas_powerview" = ps: with ps; [  ];
+    "scsgate" = ps: with ps; [  ];
     "sensor.airvisual" = ps: with ps; [  ];
-    "alarm_control_panel.alarmdotcom" = ps: with ps; [  ];
-    "arlo" = ps: with ps; [  ];
-    "apple_tv" = ps: with ps; [  ];
-    "device_tracker.bbox" = ps: with ps; [  ];
+    "sensor.alpha_vantage" = ps: with ps; [  ];
     "sensor.bbox" = ps: with ps; [  ];
-    "device_tracker.bluetooth_tracker" = ps: with ps; [  ];
-    "media_player.cast" = ps: with ps; [ PyChromecast ];
-    "media_player.cmus" = ps: with ps; [  ];
-    "comfoconnect" = ps: with ps; [  ];
-    "tts.microsoft" = 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.broadlink" = ps: with ps; [  ];
+    "sensor.buienradar" = ps: with ps; [  ];
+    "sensor.coinmarketcap" = ps: with ps; [  ];
+    "sensor.cpuspeed" = ps: with ps; [  ];
+    "sensor.crimereports" = ps: with ps; [  ];
     "sensor.cups" = ps: with ps; [  ];
-    "daikin" = ps: with ps; [  ];
-    "climate.daikin" = ps: with ps; [  ];
-    "deconz" = ps: with ps; [  ];
-    "zwave" = ps: with ps; [ pydispatcher ];
-    "android_ip_webcam" = ps: with ps; [  ];
+    "sensor.darksky" = ps: with ps; [  ];
+    "sensor.deluge" = 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.dovado" = ps: with ps; [  ];
+    "sensor.dsmr" = ps: with ps; [  ];
+    "sensor.dweet" = ps: with ps; [  ];
     "sensor.ebox" = ps: with ps; [  ];
-    "climate.econet" = ps: with ps; [  ];
-    "eight_sleep" = ps: with ps; [  ];
-    "media_player.emby" = ps: with ps; [  ];
-    "envisalink" = ps: with ps; [  ];
-    "climate.ephember" = ps: with ps; [  ];
+    "sensor.eddystone_temperature" = ps: with ps; [  ];
+    "sensor.eliqonline" = ps: with ps; [  ];
+    "sensor.envirophat" = ps: with ps; [  ];
+    "sensor.etherscan" = ps: with ps; [  ];
+    "sensor.fastdotcom" = ps: with ps; [  ];
+    "sensor.fedex" = ps: with ps; [  ];
     "sensor.fido" = ps: with ps; [  ];
-    "climate.flexit" = ps: with ps; [  ];
-    "ifttt" = ps: with ps; [  ];
-    "remote.harmony" = ps: with ps; [  ];
-    "binary_sensor.hikvision" = ps: with ps; [  ];
-    "hive" = ps: with ps; [  ];
-    "homematic" = ps: with ps; [ pyhomematic ];
+    "sensor.fitbit" = ps: with ps; [  ];
+    "sensor.fixer" = ps: with ps; [  ];
+    "sensor.fritzbox_callmonitor" = ps: with ps; [  ];
+    "sensor.fritzbox_netmonitor" = ps: with ps; [  ];
+    "sensor.gearbest" = ps: with ps; [  ];
+    "sensor.geizhals" = ps: with ps; [ beautifulsoup4 ];
+    "sensor.geo_rss_events" = ps: with ps; [ feedparser ];
+    "sensor.gitter" = ps: with ps; [  ];
+    "sensor.google_travel_time" = ps: with ps; [  ];
+    "sensor.gpsd" = ps: with ps; [  ];
+    "sensor.gtfs" = ps: with ps; [  ];
+    "sensor.hp_ilo" = ps: with ps; [  ];
+    "sensor.htu21d" = ps: with ps; [  ];
     "sensor.hydroquebec" = ps: with ps; [  ];
-    "alarm_control_panel.ialarm" = ps: with ps; [  ];
-    "device_tracker.icloud" = ps: with ps; [  ];
+    "sensor.imap" = ps: with ps; [ aioimaplib ];
+    "sensor.influxdb" = ps: with ps; [ influxdb ];
     "sensor.irish_rail_transport" = ps: with ps; [  ];
-    "binary_sensor.iss" = ps: with ps; [  ];
-    "remote.itach" = ps: with ps; [  ];
-    "kira" = ps: with ps; [  ];
     "sensor.kwb" = ps: with ps; [  ];
     "sensor.lacrosse" = ps: with ps; [  ];
     "sensor.lastfm" = ps: with ps; [ pylast ];
-    "media_player.webostv" = ps: with ps; [ websockets ];
-    "notify.webostv" = ps: with ps; [  ];
-    "litejet" = ps: with ps; [  ];
+    "sensor.linux_battery" = ps: with ps; [ batinfo ];
     "sensor.loopenergy" = ps: with ps; [  ];
-    "lutron_caseta" = ps: with ps; [  ];
-    "lutron" = ps: with ps; [  ];
-    "notify.mailgun" = ps: with ps; [  ];
-    "media_player.mediaroom" = ps: with ps; [  ];
-    "mochad" = ps: with ps; [  ];
-    "modbus" = ps: with ps; [  ];
-    "media_player.monoprice" = ps: with ps; [  ];
-    "media_player.yamaha_musiccast" = ps: with ps; [  ];
-    "cover.myq" = ps: with ps; [  ];
-    "mysensors" = ps: with ps; [  ];
-    "lock.nello" = ps: with ps; [  ];
-    "device_tracker.netgear" = ps: with ps; [  ];
-    "switch.netio" = ps: with ps; [  ];
-    "lock.nuki" = ps: with ps; [  ];
+    "sensor.luftdaten" = ps: with ps; [ luftdaten ];
+    "sensor.lyft" = ps: with ps; [  ];
+    "sensor.metoffice" = ps: with ps; [  ];
+    "sensor.mfi" = ps: with ps; [  ];
+    "sensor.mhz19" = ps: with ps; [  ];
+    "sensor.miflora" = ps: with ps; [  ];
+    "sensor.modem_callerid" = ps: with ps; [  ];
+    "sensor.mopar" = ps: with ps; [  ];
+    "sensor.mvglive" = ps: with ps; [  ];
+    "sensor.nederlandse_spoorwegen" = ps: with ps; [  ];
+    "sensor.neurio_energy" = ps: with ps; [  ];
     "sensor.nut" = ps: with ps; [  ];
-    "alarm_control_panel.nx584" = ps: with ps; [  ];
-    "binary_sensor.nx584" = ps: with ps; [  ];
-    "iota" = ps: with ps; [  ];
-    "sensor.otp" = ps: with ps; [  ];
+    "sensor.openevse" = ps: with ps; [  ];
     "sensor.openweathermap" = ps: with ps; [  ];
-    "weather.openweathermap" = ps: with ps; [  ];
+    "sensor.otp" = ps: with ps; [  ];
+    "sensor.plex" = ps: with ps; [  ];
+    "sensor.pocketcasts" = ps: with ps; [  ];
     "sensor.pollen" = ps: with ps; [  ];
-    "qwikswitch" = ps: with ps; [  ];
-    "rainbird" = ps: with ps; [  ];
-    "climate.sensibo" = ps: with ps; [  ];
+    "sensor.pushbullet" = ps: with ps; [ pushbullet ];
+    "sensor.qnap" = ps: with ps; [  ];
+    "sensor.ripple" = ps: with ps; [  ];
+    "sensor.sabnzbd" = 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; [  ];
-    "switch.acer_projector" = ps: with ps; [ pyserial ];
-    "lock.sesame" = ps: with ps; [  ];
-    "goalfeed" = ps: with ps; [  ];
+    "sensor.serial_pm" = ps: with ps; [  ];
+    "sensor.shodan" = ps: with ps; [  ];
     "sensor.sma" = ps: with ps; [  ];
-    "device_tracker.snmp" = ps: with ps; [ pysnmp ];
     "sensor.snmp" = ps: with ps; [ pysnmp ];
-    "switch.snmp" = ps: with ps; [ pysnmp ];
-    "sensor.thinkingcleaner" = ps: with ps; [  ];
-    "switch.thinkingcleaner" = ps: with ps; [  ];
-    "sensor.blockchain" = ps: with ps; [  ];
-    "media_player.clementine" = ps: with ps; [  ];
-    "digital_ocean" = ps: with ps; [ digital-ocean ];
-    "ecobee" = ps: with ps; [  ];
-    "climate.eq3btsmart" = ps: with ps; [  ];
-    "sensor.etherscan" = ps: with ps; [  ];
-    "sensor.darksky" = ps: with ps; [  ];
-    "weather.darksky" = ps: with ps; [  ];
-    "gc100" = ps: with ps; [  ];
-    "sensor.hp_ilo" = ps: with ps; [  ];
-    "joaoapps_join" = ps: with ps; [  ];
-    "notify.joaoapps_join" = ps: with ps; [  ];
-    "juicenet" = ps: with ps; [  ];
-    "lirc" = ps: with ps; [  ];
-    "fan.xiaomi_miio" = ps: with ps; [  ];
-    "light.xiaomi_miio" = ps: with ps; [  ];
-    "remote.xiaomi_miio" = ps: with ps; [  ];
-    "switch.xiaomi_miio" = ps: with ps; [  ];
-    "vacuum.xiaomi_miio" = ps: with ps; [  ];
-    "media_player.mpd" = ps: with ps; [ mpd2 ];
-    "light.mystrom" = ps: with ps; [  ];
-    "switch.mystrom" = ps: with ps; [  ];
-    "nest" = ps: with ps; [  ];
-    "device_tracker.nmap_tracker" = ps: with ps; [  ];
-    "notify.pushover" = ps: with ps; [  ];
-    "sensor.ripple" = ps: with ps; [  ];
-    "media_player.roku" = ps: with ps; [  ];
     "sensor.sochain" = ps: with ps; [  ];
+    "sensor.speedtest" = ps: with ps; [  ];
+    "sensor.sql" = ps: with ps; [ sqlalchemy ];
+    "sensor.steam_online" = ps: with ps; [  ];
+    "sensor.swiss_hydrological_data" = ps: with ps; [ xmltodict ];
+    "sensor.swiss_public_transport" = ps: with ps; [  ];
     "sensor.synologydsm" = ps: with ps; [  ];
-    "tado" = ps: with ps; [  ];
-    "telegram_bot" = ps: with ps; [ python-telegram-bot ];
+    "sensor.systemmonitor" = ps: with ps; [ psutil ];
+    "sensor.sytadin" = ps: with ps; [ beautifulsoup4 ];
+    "sensor.tank_utility" = ps: with ps; [  ];
+    "sensor.ted5000" = ps: with ps; [ xmltodict ];
+    "sensor.temper" = ps: with ps; [  ];
+    "sensor.thinkingcleaner" = ps: with ps; [  ];
+    "sensor.tibber" = ps: with ps; [  ];
+    "sensor.transmission" = ps: with ps; [ transmissionrpc ];
+    "sensor.travisci" = ps: with ps; [  ];
     "sensor.twitch" = ps: with ps; [  ];
-    "velbus" = ps: with ps; [  ];
-    "media_player.vlc" = ps: with ps; [  ];
-    "sensor.swiss_public_transport" = ps: with ps; [  ];
-    "alarm_control_panel.egardia" = ps: with ps; [  ];
+    "sensor.uber" = ps: with ps; [  ];
+    "sensor.ups" = ps: with ps; [  ];
+    "sensor.vasttrafik" = ps: with ps; [  ];
+    "sensor.waqi" = ps: with ps; [  ];
     "sensor.whois" = ps: with ps; [  ];
-    "device_tracker.tile" = ps: with ps; [  ];
-    "climate.touchline" = ps: with ps; [  ];
-    "device_tracker.trackr" = ps: with ps; [  ];
-    "tradfri" = ps: with ps; [  ];
-    "device_tracker.unifi" = ps: with ps; [ pyunifi ];
-    "keyboard" = ps: with ps; [  ];
-    "vera" = ps: with ps; [  ];
-    "media_player.vizio" = ps: with ps; [  ];
-    "velux" = ps: with ps; [  ];
-    "wemo" = ps: with ps; [  ];
-    "camera.xeoma" = ps: with ps; [  ];
-    "zabbix" = ps: with ps; [  ];
-    "sensor.qnap" = ps: with ps; [  ];
-    "switch.rachio" = ps: with ps; [  ];
-    "climate.radiotherm" = ps: with ps; [  ];
-    "raincloud" = ps: with ps; [  ];
-    "raspihats" = ps: with ps; [  ];
-    "switch.rainmachine" = ps: with ps; [  ];
-    "python_script" = ps: with ps; [  ];
-    "rflink" = ps: with ps; [  ];
-    "ring" = ps: with ps; [  ];
-    "notify.rocketchat" = ps: with ps; [  ];
-    "vacuum.roomba" = ps: with ps; [  ];
-    "switch.rpi_rf" = ps: with ps; [  ];
-    "media_player.russound_rnet" = ps: with ps; [  ];
-    "media_player.russound_rio" = ps: with ps; [  ];
-    "media_player.yamaha" = ps: with ps; [  ];
-    "media_player.samsungtv" = ps: with ps; [  ];
-    "satel_integra" = ps: with ps; [  ];
-    "sensor.deutsche_bahn" = ps: with ps; [  ];
-    "scsgate" = ps: with ps; [  ];
-    "notify.sendgrid" = ps: with ps; [  ];
-    "light.sensehat" = ps: with ps; [  ];
-    "sensor.sensehat" = ps: with ps; [  ];
-    "media_player.aquostv" = ps: with ps; [  ];
-    "sensor.shodan" = ps: with ps; [  ];
-    "notify.simplepush" = ps: with ps; [  ];
-    "alarm_control_panel.simplisafe" = ps: with ps; [  ];
+    "sensor.xbox_live" = ps: with ps; [  ];
+    "sensor.yahoo_finance" = ps: with ps; [  ];
+    "sensor.yr" = ps: with ps; [ xmltodict ];
+    "sensor.yweather" = ps: with ps; [  ];
+    "shiftr" = ps: with ps; [ paho-mqtt ];
     "skybell" = ps: with ps; [  ];
-    "notify.slack" = ps: with ps; [  ];
     "sleepiq" = ps: with ps; [  ];
-    "media_player.snapcast" = ps: with ps; [  ];
-    "sensor.speedtest" = ps: with ps; [  ];
-    "recorder" = ps: with ps; [ sqlalchemy ];
-    "sensor.sql" = ps: with ps; [ sqlalchemy ];
+    "spc" = ps: with ps; [ websockets ];
     "statsd" = ps: with ps; [ statsd ];
-    "sensor.steam_online" = ps: with ps; [  ];
+    "switch.acer_projector" = ps: with ps; [ pyserial ];
+    "switch.anel_pwrctrl" = ps: with ps; [  ];
+    "switch.broadlink" = ps: with ps; [  ];
+    "switch.deluge" = ps: with ps; [  ];
+    "switch.digitalloggers" = ps: with ps; [  ];
+    "switch.dlink" = ps: with ps; [  ];
+    "switch.edimax" = ps: with ps; [  ];
+    "switch.fritzdect" = ps: with ps; [  ];
+    "switch.hikvisioncam" = ps: with ps; [  ];
+    "switch.mfi" = ps: with ps; [  ];
+    "switch.mystrom" = ps: with ps; [  ];
+    "switch.netio" = ps: with ps; [  ];
+    "switch.orvibo" = ps: with ps; [  ];
+    "switch.rachio" = ps: with ps; [  ];
+    "switch.rainmachine" = ps: with ps; [  ];
+    "switch.rpi_rf" = ps: with ps; [  ];
+    "switch.snmp" = ps: with ps; [ pysnmp ];
+    "switch.thinkingcleaner" = ps: with ps; [  ];
+    "switch.tplink" = ps: with ps; [  ];
+    "switch.transmission" = ps: with ps; [ transmissionrpc ];
+    "switch.wake_on_lan" = ps: with ps; [ wakeonlan ];
+    "switch.xiaomi_miio" = ps: with ps; [  ];
+    "tado" = ps: with ps; [  ];
     "tahoma" = ps: with ps; [  ];
-    "sensor.tank_utility" = ps: with ps; [  ];
-    "binary_sensor.tapsaff" = ps: with ps; [  ];
-    "tellstick" = ps: with ps; [  ];
+    "telegram_bot" = ps: with ps; [ python-telegram-bot ];
     "tellduslive" = ps: with ps; [  ];
-    "sensor.temper" = ps: with ps; [  ];
+    "tellstick" = ps: with ps; [  ];
     "tesla" = ps: with ps; [  ];
     "thingspeak" = ps: with ps; [  ];
-    "light.tikteck" = ps: with ps; [  ];
-    "calendar.todoist" = ps: with ps; [ todoist ];
     "toon" = ps: with ps; [  ];
-    "alarm_control_panel.totalconnect" = ps: with ps; [  ];
-    "sensor.transmission" = ps: with ps; [ transmissionrpc ];
-    "switch.transmission" = ps: with ps; [ transmissionrpc ];
+    "tradfri" = ps: with ps; [  ];
+    "tts" = ps: with ps; [ mutagen ];
+    "tts.amazon_polly" = ps: with ps; [ boto3 ];
+    "tts.baidu" = ps: with ps; [  ];
+    "tts.google" = ps: with ps; [  ];
+    "tts.microsoft" = ps: with ps; [  ];
     "twilio" = ps: with ps; [ twilio ];
-    "sensor.uber" = ps: with ps; [  ];
-    "sensor.ups" = ps: with ps; [  ];
-    "camera.uvc" = ps: with ps; [  ];
-    "climate.venstar" = ps: with ps; [  ];
+    "updater" = ps: with ps; [ distro ];
+    "upnp" = ps: with ps; [  ];
+    "usps" = ps: with ps; [  ];
+    "vacuum.roomba" = ps: with ps; [  ];
+    "vacuum.xiaomi_miio" = ps: with ps; [  ];
+    "velbus" = ps: with ps; [  ];
+    "velux" = ps: with ps; [  ];
+    "vera" = ps: with ps; [  ];
+    "verisure" = ps: with ps; [  ];
     "volvooncall" = ps: with ps; [  ];
-    "sensor.vasttrafik" = ps: with ps; [  ];
     "vultr" = ps: with ps; [ vultr ];
-    "wake_on_lan" = ps: with ps; [  ];
-    "switch.wake_on_lan" = ps: with ps; [  ];
-    "sensor.waqi" = ps: with ps; [  ];
-    "cloud" = ps: with ps; [  ];
+    "wake_on_lan" = ps: with ps; [ wakeonlan ];
     "waterfurnace" = ps: with ps; [  ];
-    "media_player.gpmdp" = ps: with ps; [  ];
-    "spc" = ps: with ps; [ websockets ];
-    "zigbee" = ps: with ps; [  ];
-    "sensor.xbox_live" = ps: with ps; [  ];
-    "knx" = ps: with ps; [  ];
-    "media_player.bluesound" = ps: with ps; [ xmltodict ];
-    "sensor.swiss_hydrological_data" = ps: with ps; [ xmltodict ];
-    "sensor.ted5000" = ps: with ps; [ xmltodict ];
-    "sensor.yr" = ps: with ps; [ xmltodict ];
-    "sensor.yahoo_finance" = ps: with ps; [  ];
-    "sensor.yweather" = ps: with ps; [  ];
+    "weather.buienradar" = ps: with ps; [  ];
+    "weather.darksky" = ps: with ps; [  ];
+    "weather.metoffice" = ps: with ps; [  ];
+    "weather.openweathermap" = ps: with ps; [  ];
     "weather.yweather" = ps: with ps; [  ];
-    "light.yeelight" = ps: with ps; [  ];
-    "light.yeelightsunflower" = ps: with ps; [  ];
-    "media_extractor" = ps: with ps; [  ];
-    "light.zengge" = ps: with ps; [  ];
+    "wemo" = ps: with ps; [  ];
+    "wink" = ps: with ps; [  ];
+    "xiaomi_aqara" = ps: with ps; [  ];
+    "zabbix" = ps: with ps; [  ];
     "zeroconf" = ps: with ps; [ zeroconf ];
-    "media_player.ziggo_mediabox_xl" = ps: with ps; [  ];
+    "zha" = ps: with ps; [  ];
+    "zigbee" = ps: with ps; [  ];
+    "zwave" = ps: with ps; [ pydispatcher ];
   };
 }
diff --git a/pkgs/servers/home-assistant/parse-requirements.py b/pkgs/servers/home-assistant/parse-requirements.py
index 5af794e75fa4..3aa9823dbe8b 100755
--- a/pkgs/servers/home-assistant/parse-requirements.py
+++ b/pkgs/servers/home-assistant/parse-requirements.py
@@ -14,6 +14,7 @@
 # Then, a Nix attribute set mapping component name to dependencies is created.
 
 from urllib.request import urlopen
+from collections import OrderedDict
 import subprocess
 import os
 import sys
@@ -73,7 +74,7 @@ version = get_version()
 print('Generating component-packages.nix for version {}'.format(version))
 requirements = fetch_reqs(version=version)
 build_inputs = {}
-for component, reqs in requirements.items():
+for component, reqs in OrderedDict(sorted(requirements.items())).items():
     attr_paths = []
     for req in reqs:
         try: