diff options
author | Martin Weinelt <mweinelt@users.noreply.github.com> | 2021-03-06 19:26:20 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-06 19:26:20 +0100 |
commit | b349460dd860b59b472c90f9b9b8f29faf488968 (patch) | |
tree | 7b0be5ff510b4aa967494da73c4a72d3b9b4110e | |
parent | a621f0105ccea6697d9856c025effc8c2cc0f33b (diff) | |
parent | 6ed2bd99376c7139cdca30a3073c42e720676e9f (diff) | |
download | nixpkgs-b349460dd860b59b472c90f9b9b8f29faf488968.tar nixpkgs-b349460dd860b59b472c90f9b9b8f29faf488968.tar.gz nixpkgs-b349460dd860b59b472c90f9b9b8f29faf488968.tar.bz2 nixpkgs-b349460dd860b59b472c90f9b9b8f29faf488968.tar.lz nixpkgs-b349460dd860b59b472c90f9b9b8f29faf488968.tar.xz nixpkgs-b349460dd860b59b472c90f9b9b8f29faf488968.tar.zst nixpkgs-b349460dd860b59b472c90f9b9b8f29faf488968.zip |
Merge pull request #115016 from mweinelt/home-assistant
-rw-r--r-- | nixos/modules/services/misc/home-assistant.nix | 12 | ||||
-rw-r--r-- | nixos/tests/home-assistant.nix | 2 | ||||
-rw-r--r-- | pkgs/development/python-modules/accuweather/default.nix | 33 | ||||
-rw-r--r-- | pkgs/development/python-modules/adext/default.nix | 16 | ||||
-rw-r--r-- | pkgs/development/python-modules/alarmdecoder/default.nix | 4 | ||||
-rw-r--r-- | pkgs/development/python-modules/bellows/default.nix | 38 | ||||
-rw-r--r-- | pkgs/development/python-modules/plexapi/default.nix | 4 | ||||
-rw-r--r-- | pkgs/development/python-modules/pyvera/default.nix | 13 | ||||
-rw-r--r-- | pkgs/development/python-modules/zha-quirks/default.nix | 4 | ||||
-rw-r--r-- | pkgs/development/python-modules/zigpy-znp/default.nix | 9 | ||||
-rw-r--r-- | pkgs/servers/home-assistant/component-packages.nix | 29 | ||||
-rw-r--r-- | pkgs/servers/home-assistant/default.nix | 163 | ||||
-rw-r--r-- | pkgs/servers/home-assistant/frontend.nix | 4 |
13 files changed, 249 insertions, 82 deletions
diff --git a/nixos/modules/services/misc/home-assistant.nix b/nixos/modules/services/misc/home-assistant.nix index 1f2e13f3732..f53c49a1ee6 100644 --- a/nixos/modules/services/misc/home-assistant.nix +++ b/nixos/modules/services/misc/home-assistant.nix @@ -183,8 +183,14 @@ in { }; package = mkOption { - default = pkgs.home-assistant; - defaultText = "pkgs.home-assistant"; + default = pkgs.home-assistant.overrideAttrs (oldAttrs: { + doInstallCheck = false; + }); + defaultText = literalExample '' + pkgs.home-assistant.overrideAttrs (oldAttrs: { + doInstallCheck = false; + }) + ''; type = types.package; example = literalExample '' pkgs.home-assistant.override { @@ -192,7 +198,7 @@ in { } ''; description = '' - Home Assistant package to use. + Home Assistant package to use. By default the tests are disabled, as they take a considerable amout of time to complete. Override <literal>extraPackages</literal> or <literal>extraComponents</literal> in order to add additional dependencies. If you specify <option>config</option> and do not set <option>autoExtraComponents</option> to <literal>false</literal>, overriding <literal>extraComponents</literal> will have no effect. diff --git a/nixos/tests/home-assistant.nix b/nixos/tests/home-assistant.nix index 131f50747fe..726c7eb6acb 100644 --- a/nixos/tests/home-assistant.nix +++ b/nixos/tests/home-assistant.nix @@ -24,6 +24,8 @@ in { services.home-assistant = { inherit configDir; enable = true; + # includes the package with all tests enabled + package = pkgs.home-assistant; config = { homeassistant = { name = "Home"; diff --git a/pkgs/development/python-modules/accuweather/default.nix b/pkgs/development/python-modules/accuweather/default.nix index ed6dcb54377..da2feef18c8 100644 --- a/pkgs/development/python-modules/accuweather/default.nix +++ b/pkgs/development/python-modules/accuweather/default.nix @@ -1,22 +1,43 @@ -{ aiohttp, buildPythonPackage, fetchFromGitHub, lib, pytest, pytestCheckHook -, pytestcov, pytestrunner, pytest-asyncio, python, pythonOlder }: +{ lib +, buildPythonPackage +, fetchFromGitHub +, pythonOlder +, pytestrunner +, aiohttp +, aioresponses +, pytestCheckHook +, pytestcov +, pytest-asyncio +}: buildPythonPackage rec { pname = "accuweather"; - version = "0.0.11"; + version = "0.1.0"; - disabled = pythonOlder "3.8"; + disabled = pythonOlder "3.6"; src = fetchFromGitHub { owner = "bieniu"; repo = pname; rev = version; - sha256 = "1sgbw9yldf81phwx6pbvqg9sp767whxymyj0ca9pwx1r6ipr080h"; + sha256 = "0jp2x7fgg1shgr1fx296rni00lmjjmjgg141giljzizgd04dwgy3"; }; + postPatch = '' + # we don't have pytest-error-for-skips packaged + substituteInPlace pytest.ini --replace "--error-for-skips" "" + ''; + nativeBuildInputs = [ pytestrunner ]; + propagatedBuildInputs = [ aiohttp ]; - checkInputs = [ pytestCheckHook pytestcov pytest-asyncio ]; + + checkInputs = [ + aioresponses + pytestCheckHook + pytestcov + pytest-asyncio + ]; meta = with lib; { description = diff --git a/pkgs/development/python-modules/adext/default.nix b/pkgs/development/python-modules/adext/default.nix index f3818c93188..12c86bfc8f5 100644 --- a/pkgs/development/python-modules/adext/default.nix +++ b/pkgs/development/python-modules/adext/default.nix @@ -1,24 +1,26 @@ { lib , buildPythonPackage , fetchPypi +, setuptools-scm , alarmdecoder }: buildPythonPackage rec { pname = "adext"; - version = "0.3"; + version = "0.4.1"; src = fetchPypi { inherit pname version; - sha256 = "184qxw6i5ixnhgkjnby4zwn4jg90mxb8xy9vbg80x5w331p4z50f"; + sha256 = "1yz1rpfvhbf7kfjck5vadbj9rd3bkx5248whaa3impdrjh7vs03x"; }; - postPatch = '' - substituteInPlace setup.py \ - --replace "alarmdecoder==1.13.2" "alarmdecoder>=1.13.2" - ''; + nativeBuildInputs = [ + setuptools-scm + ]; - propagatedBuildInputs = [ alarmdecoder ]; + propagatedBuildInputs = [ + alarmdecoder + ]; # Tests are not published yet doCheck = false; diff --git a/pkgs/development/python-modules/alarmdecoder/default.nix b/pkgs/development/python-modules/alarmdecoder/default.nix index 10438d54081..ee07588b325 100644 --- a/pkgs/development/python-modules/alarmdecoder/default.nix +++ b/pkgs/development/python-modules/alarmdecoder/default.nix @@ -3,14 +3,14 @@ buildPythonPackage rec { pname = "alarmdecoder"; - version = "1.13.9"; + version = "1.13.10"; disabled = pythonOlder "3.6"; src = fetchFromGitHub { owner = "nutechsoftware"; repo = "alarmdecoder"; rev = version; - sha256 = "0plr2h1qn4ryawbaxf29cfna4wailghhaqy1jcm9kxq6q7b9xqqy"; + sha256 = "05581j78181p6mwbfpbkp5irnrzsvps1lslgqrh7xbdcmz5b2nxd"; }; propagatedBuildInputs = [ pyserial pyftdi pyusb pyopenssl ]; diff --git a/pkgs/development/python-modules/bellows/default.nix b/pkgs/development/python-modules/bellows/default.nix index d47c5d716a7..4371c8c8eab 100644 --- a/pkgs/development/python-modules/bellows/default.nix +++ b/pkgs/development/python-modules/bellows/default.nix @@ -1,21 +1,40 @@ -{ lib, buildPythonPackage, fetchFromGitHub -, click, click-log, pure-pcapy3 -, pyserial-asyncio, voluptuous, zigpy -, asynctest, pytestCheckHook, pytest-asyncio }: +{ lib +, buildPythonPackage +, fetchFromGitHub +, click +, click-log +, pure-pcapy3 +, pyserial-asyncio +, voluptuous +, zigpy +, asynctest +, pytestCheckHook +, pytest-asyncio +}: buildPythonPackage rec { pname = "bellows"; - version = "0.21.0"; + version = "0.22.0"; src = fetchFromGitHub { owner = "zigpy"; repo = "bellows"; rev = version; - sha256 = "1gja7cb1cyzbi19k8awa2gyc3bjam0adapalpk5slxny0vxlc73a"; + sha256 = "0il2cwnrcvgxx9jkj1xr2caqyza3kqjys3fpmcx7avy04xbf5dbv"; }; + prePatch = '' + substituteInPlace setup.py \ + --replace "click-log==0.2.1" "click-log>=0.2.1" + ''; + propagatedBuildInputs = [ - click click-log pure-pcapy3 pyserial-asyncio voluptuous zigpy + click + click-log + pure-pcapy3 + pyserial-asyncio + voluptuous + zigpy ]; checkInputs = [ @@ -24,11 +43,6 @@ buildPythonPackage rec { pytest-asyncio ]; - prePatch = '' - substituteInPlace setup.py \ - --replace "click-log==0.2.0" "click-log>=0.2.0" - ''; - meta = with lib; { description = "A Python 3 project to implement EZSP for EmberZNet devices"; homepage = "https://github.com/zigpy/bellows"; diff --git a/pkgs/development/python-modules/plexapi/default.nix b/pkgs/development/python-modules/plexapi/default.nix index 5251ff1de0e..810bd1ffed1 100644 --- a/pkgs/development/python-modules/plexapi/default.nix +++ b/pkgs/development/python-modules/plexapi/default.nix @@ -9,14 +9,14 @@ buildPythonPackage rec { pname = "PlexAPI"; - version = "4.3.1"; + version = "4.4.0"; disabled = isPy27; src = fetchFromGitHub { owner = "pkkid"; repo = "python-plexapi"; rev = version; - sha256 = "sha256-gRXNOGd9YGcGysKbAtiNwi5NxPvv39F6PEXBjiYbVq4="; + sha256 = "0wzdzi5afncinavz5g77ximdr9y2ndzwb0gl819n0l6pnvbxdwp2"; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/pyvera/default.nix b/pkgs/development/python-modules/pyvera/default.nix index 4415ca7c376..2439bd46856 100644 --- a/pkgs/development/python-modules/pyvera/default.nix +++ b/pkgs/development/python-modules/pyvera/default.nix @@ -1,7 +1,6 @@ { lib , buildPythonPackage , fetchFromGitHub -, fetchpatch , poetry-core , pytest-cov , pytest-asyncio @@ -13,24 +12,16 @@ buildPythonPackage rec { pname = "pyvera"; - version = "0.3.11"; + version = "0.3.13"; format = "pyproject"; src = fetchFromGitHub { owner = "pavoni"; repo = pname; rev = version; - sha256 = "0yi2cjd3jag95xa0k24f7d7agi26ywb3219a0j0k8l2nsx2sdi87"; + sha256 = "0vh82bwgbq93jrwi9q4da534paknpak8hxi4wwlxh3qcvnpy1njv"; }; - patches = [ - (fetchpatch { - # build-system section is missing https://github.com/pavoni/pyvera/pull/142 - url = "https://github.com/pavoni/pyvera/pull/142/commits/e90995a8d55107118d324e8cf189ddf1d9e3aa6c.patch"; - sha256 = "1psq3fiwg20kcwyybzh5g17dzn5fh29lhm238npyg846innbzgs7"; - }) - ]; - nativeBuildInputs = [ poetry-core ]; propagatedBuildInputs = [ requests ]; diff --git a/pkgs/development/python-modules/zha-quirks/default.nix b/pkgs/development/python-modules/zha-quirks/default.nix index 3141f666a63..bc4599f08fb 100644 --- a/pkgs/development/python-modules/zha-quirks/default.nix +++ b/pkgs/development/python-modules/zha-quirks/default.nix @@ -9,13 +9,13 @@ buildPythonPackage rec { pname = "zha-quirks"; - version = "0.0.53"; + version = "0.0.54"; src = fetchFromGitHub { owner = "zigpy"; repo = "zha-device-handlers"; rev = version; - sha256 = "16n99r7bjd3lnxn72lfnxg44n7mkv196vdhkw2sf1nq1an4ks1nc"; + sha256 = "1xc4rky9x2n15rsb18vyg4lb2897k14gkz03khgf8gp37bg2dk5h"; }; propagatedBuildInputs = [ aiohttp zigpy ]; diff --git a/pkgs/development/python-modules/zigpy-znp/default.nix b/pkgs/development/python-modules/zigpy-znp/default.nix index 1a1c639a473..2543d067585 100644 --- a/pkgs/development/python-modules/zigpy-znp/default.nix +++ b/pkgs/development/python-modules/zigpy-znp/default.nix @@ -17,13 +17,13 @@ buildPythonPackage rec { pname = "zigpy-znp"; - version = "0.3.0"; + version = "0.4.0"; src = fetchFromGitHub { owner = "zha-ng"; repo = "zigpy-znp"; rev = "v${version}"; - sha256 = "18dav2n5fqdigf8dl7gcqa9z8l6p2ig6l5q78gqg2wj7wjpncwyj"; + sha256 = "1g5jssdnibhb4i4k1js9iy9w40cipf1gdnyp847x0bv6wblzx8rl"; }; propagatedBuildInputs = [ @@ -45,11 +45,6 @@ buildPythonPackage rec { pytestCheckHook ]; - disabledTests = [ - # zigpy-znp was too slow to sync up with the zigpy 0.29 release and has API breakage, remove >0.3.0 - "test_force_remove" - ]; - meta = with lib; { description = "A library for zigpy which communicates with TI ZNP radios"; homepage = "https://github.com/zha-ng/zigpy-znp"; diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix index 4e03bf19092..df0164f2dd9 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 = "2021.2.3"; + version = "2021.3.2"; components = { "abode" = ps: with ps; [ abodepy ]; "accuweather" = ps: with ps; [ accuweather ]; @@ -12,6 +12,7 @@ "adguard" = ps: with ps; [ adguardhome ]; "ads" = ps: with ps; [ pyads ]; "advantage_air" = ps: with ps; [ advantage-air ]; + "aemet" = ps: with ps; [ ]; # missing inputs: AEMET-OpenData "aftership" = ps: with ps; [ pyaftership ]; "agent_dvr" = ps: with ps; [ agent-py ]; "air_quality" = ps: with ps; [ ]; @@ -120,13 +121,13 @@ "clickatell" = ps: with ps; [ ]; "clicksend" = ps: with ps; [ ]; "clicksend_tts" = ps: with ps; [ ]; + "climacell" = ps: with ps; [ ]; # missing inputs: pyclimacell "climate" = ps: with ps; [ ]; "cloud" = ps: with ps; [ aiohttp-cors hass-nabucasa ]; "cloudflare" = ps: with ps; [ pycfdns ]; "cmus" = ps: with ps; [ ]; # missing inputs: pycmus "co2signal" = ps: with ps; [ ]; # missing inputs: co2signal "coinbase" = ps: with ps; [ ]; # missing inputs: coinbase - "coinmarketcap" = ps: with ps; [ coinmarketcap ]; "color_extractor" = ps: with ps; [ ]; # missing inputs: colorthief "comed_hourly_pricing" = ps: with ps; [ ]; "comfoconnect" = ps: with ps; [ ]; # missing inputs: pycomfoconnect @@ -142,7 +143,6 @@ "cover" = ps: with ps; [ ]; "cppm_tracker" = ps: with ps; [ ]; # missing inputs: clearpasspy "cpuspeed" = ps: with ps; [ py-cpuinfo ]; - "crimereports" = ps: with ps; [ ]; # missing inputs: crimereports "cups" = ps: with ps; [ pycups ]; "currencylayer" = ps: with ps; [ ]; "daikin" = ps: with ps; [ pydaikin ]; @@ -154,7 +154,7 @@ "deconz" = ps: with ps; [ ]; # missing inputs: pydeconz "decora" = ps: with ps; [ bluepy ]; # missing inputs: decora "decora_wifi" = ps: with ps; [ ]; # missing inputs: decora_wifi - "default_config" = ps: with ps; [ pynacl aiohttp-cors defusedxml distro emoji hass-nabucasa netdisco pillow scapy sqlalchemy zeroconf ]; + "default_config" = ps: with ps; [ pynacl aiohttp-cors async-upnp-client defusedxml distro emoji hass-nabucasa netdisco pillow scapy sqlalchemy zeroconf ]; "delijn" = ps: with ps; [ ]; # missing inputs: pydelijn "deluge" = ps: with ps; [ deluge-client ]; "demo" = ps: with ps; [ aiohttp-cors ]; @@ -238,6 +238,7 @@ "everlights" = ps: with ps; [ pyeverlights ]; "evohome" = ps: with ps; [ ]; # missing inputs: evohome-async "ezviz" = ps: with ps; [ ]; # missing inputs: pyezviz + "faa_delays" = ps: with ps; [ faadelays ]; "facebook" = ps: with ps; [ ]; "facebox" = ps: with ps; [ ]; "fail2ban" = ps: with ps; [ ]; @@ -276,7 +277,7 @@ "foscam" = ps: with ps; [ ]; # missing inputs: libpyfoscam "foursquare" = ps: with ps; [ aiohttp-cors ]; "free_mobile" = ps: with ps; [ ]; # missing inputs: freesms - "freebox" = ps: with ps; [ aiohttp-cors netdisco zeroconf ]; # missing inputs: aiofreepybox + "freebox" = ps: with ps; [ aiohttp-cors netdisco zeroconf ]; # missing inputs: freebox-api "freedns" = ps: with ps; [ ]; "fritz" = ps: with ps; [ fritzconnection ]; "fritzbox" = ps: with ps; [ pyfritzhome ]; @@ -421,6 +422,7 @@ "keyboard_remote" = ps: with ps; [ aionotify evdev ]; "kira" = ps: with ps; [ pykira ]; "kiwi" = ps: with ps; [ ]; # missing inputs: kiwiki-client + "kmtronic" = ps: with ps; [ pykmtronic ]; "knx" = ps: with ps; [ xknx ]; "kodi" = ps: with ps; [ ]; # missing inputs: pykodi "konnected" = ps: with ps; [ aiohttp-cors ]; # missing inputs: konnected @@ -446,6 +448,7 @@ "linux_battery" = ps: with ps; [ batinfo ]; "lirc" = ps: with ps; [ ]; # missing inputs: python-lirc "litejet" = ps: with ps; [ ]; # missing inputs: pylitejet + "litterrobot" = ps: with ps; [ ]; # missing inputs: pylitterbot "llamalab_automate" = ps: with ps; [ ]; "local_file" = ps: with ps; [ ]; "local_ip" = ps: with ps; [ ]; @@ -466,6 +469,7 @@ "lutron_caseta" = ps: with ps; [ ]; # missing inputs: aiolip pylutron-caseta "lw12wifi" = ps: with ps; [ ]; # missing inputs: lw12 "lyft" = ps: with ps; [ ]; # missing inputs: lyft_rides + "lyric" = ps: with ps; [ aiohttp-cors aiolyric ]; "magicseaweed" = ps: with ps; [ ]; # missing inputs: magicseaweed "mailbox" = ps: with ps; [ aiohttp-cors ]; "mailgun" = ps: with ps; [ aiohttp-cors ]; # missing inputs: pymailgunner @@ -476,6 +480,7 @@ "mastodon" = ps: with ps; [ ]; # missing inputs: Mastodon.py "matrix" = ps: with ps; [ matrix-client ]; "maxcube" = ps: with ps; [ ]; # missing inputs: maxcube-api + "mazda" = ps: with ps; [ pymazda ]; "mcp23017" = ps: with ps; [ ]; # missing inputs: RPi.GPIO adafruit-circuitpython-mcp230xx "media_extractor" = ps: with ps; [ aiohttp-cors youtube-dl-light ]; "media_player" = ps: with ps; [ aiohttp-cors ]; @@ -519,7 +524,9 @@ "mqtt_room" = ps: with ps; [ aiohttp-cors paho-mqtt ]; "mqtt_statestream" = ps: with ps; [ aiohttp-cors paho-mqtt ]; "msteams" = ps: with ps; [ pymsteams ]; + "mullvad" = ps: with ps; [ mullvad-api ]; "mvglive" = ps: with ps; [ PyMVGLive ]; + "my" = ps: with ps; [ aiohttp-cors pillow ]; "mychevy" = ps: with ps; [ ]; # missing inputs: mychevy "mycroft" = ps: with ps; [ ]; # missing inputs: mycroftapi "myq" = ps: with ps; [ pymyq ]; @@ -560,7 +567,6 @@ "nsw_fuel_station" = ps: with ps; [ ]; # missing inputs: nsw-fuel-api-client "nsw_rural_fire_service_feed" = ps: with ps; [ ]; # missing inputs: aio_geojson_nsw_rfs_incidents "nuheat" = ps: with ps; [ ]; # missing inputs: nuheat - "nuimo_controller" = ps: with ps; [ ]; # missing inputs: --only-binary=all nuimo "nuki" = ps: with ps; [ pynuki ]; "numato" = ps: with ps; [ ]; # missing inputs: numato-gpio "number" = ps: with ps; [ ]; @@ -622,7 +628,7 @@ "ping" = ps: with ps; [ icmplib ]; "pioneer" = ps: with ps; [ ]; "pjlink" = ps: with ps; [ ]; # missing inputs: pypjlink2 - "plaato" = ps: with ps; [ aiohttp-cors ]; + "plaato" = ps: with ps; [ aiohttp-cors hass-nabucasa pyplaato ]; "plant" = ps: with ps; [ sqlalchemy ]; "plex" = ps: with ps; [ aiohttp-cors plexapi plexauth plexwebsocket ]; "plugwise" = ps: with ps; [ plugwise ]; @@ -682,6 +688,7 @@ "ring" = ps: with ps; [ ha-ffmpeg ring-doorbell ]; "ripple" = ps: with ps; [ ]; # missing inputs: python-ripple-api "risco" = ps: with ps; [ pyrisco ]; + "rituals_perfume_genie" = ps: with ps; [ pyrituals ]; "rmvtransport" = ps: with ps; [ PyRMVtransport ]; "rocketchat" = ps: with ps; [ ]; # missing inputs: rocketchat-API "roku" = ps: with ps; [ ]; # missing inputs: rokuecp @@ -749,6 +756,7 @@ "smart_meter_texas" = ps: with ps; [ ]; # missing inputs: smart-meter-texas "smarthab" = ps: with ps; [ ]; # missing inputs: smarthab "smartthings" = ps: with ps; [ aiohttp-cors hass-nabucasa ]; # missing inputs: pysmartapp pysmartthings + "smarttub" = ps: with ps; [ python-smarttub ]; "smarty" = ps: with ps; [ ]; # missing inputs: pysmarty "smhi" = ps: with ps; [ ]; # missing inputs: smhi-pkg "sms" = ps: with ps; [ python-gammu ]; @@ -780,7 +788,7 @@ "sql" = ps: with ps; [ sqlalchemy ]; "squeezebox" = ps: with ps; [ pysqueezebox ]; "srp_energy" = ps: with ps; [ ]; # missing inputs: srpenergy - "ssdp" = ps: with ps; [ aiohttp-cors defusedxml netdisco zeroconf ]; + "ssdp" = ps: with ps; [ aiohttp-cors async-upnp-client defusedxml netdisco zeroconf ]; "starline" = ps: with ps; [ ]; # missing inputs: starline "starlingbank" = ps: with ps; [ ]; # missing inputs: starlingbank "startca" = ps: with ps; [ xmltodict ]; @@ -792,6 +800,7 @@ "stream" = ps: with ps; [ aiohttp-cors av ]; "streamlabswater" = ps: with ps; [ ]; # missing inputs: streamlabswater "stt" = ps: with ps; [ aiohttp-cors ]; + "subaru" = ps: with ps; [ subarulink ]; "suez_water" = ps: with ps; [ ]; # missing inputs: pysuez "sun" = ps: with ps; [ ]; "supervisord" = ps: with ps; [ ]; @@ -805,7 +814,6 @@ "switcher_kis" = ps: with ps; [ aioswitcher ]; "switchmate" = ps: with ps; [ ]; # missing inputs: pySwitchmate "syncthru" = ps: with ps; [ url-normalize ]; # missing inputs: pysyncthru - "synology" = ps: with ps; [ ]; # missing inputs: py-synology "synology_chat" = ps: with ps; [ ]; "synology_dsm" = ps: with ps; [ ]; # missing inputs: synologydsm-api "synology_srm" = ps: with ps; [ ]; # missing inputs: synology-srm @@ -873,7 +881,7 @@ "twinkly" = ps: with ps; [ twinkly-client ]; "twitch" = ps: with ps; [ python-twitch-client ]; "twitter" = ps: with ps; [ twitterapi ]; - "ubus" = ps: with ps; [ ]; + "ubus" = ps: with ps; [ openwrt-ubus-rpc ]; "ue_smart_radio" = ps: with ps; [ ]; "uk_transport" = ps: with ps; [ ]; "unifi" = ps: with ps; [ aiounifi ]; @@ -946,7 +954,6 @@ "xbox" = ps: with ps; [ aiohttp-cors ]; # missing inputs: xbox-webapi "xbox_live" = ps: with ps; [ xboxapi ]; "xeoma" = ps: with ps; [ pyxeoma ]; - "xfinity" = ps: with ps; [ ]; # missing inputs: xfinity-gateway "xiaomi" = ps: with ps; [ ha-ffmpeg ]; "xiaomi_aqara" = ps: with ps; [ pyxiaomigateway aiohttp-cors netdisco zeroconf ]; "xiaomi_miio" = ps: with ps; [ construct python-miio ]; diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix index 8931bf65b5c..6a922094232 100644 --- a/pkgs/servers/home-assistant/default.nix +++ b/pkgs/servers/home-assistant/default.nix @@ -61,14 +61,14 @@ let extraBuildInputs = extraPackages py.pkgs; # Don't forget to run parse-requirements.py after updating - hassVersion = "2021.2.3"; + hassVersion = "2021.3.2"; in with py.pkgs; buildPythonApplication rec { pname = "homeassistant"; version = assert (componentPackages.version == hassVersion); hassVersion; # check REQUIRED_PYTHON_VER in homeassistant/const.py - disabled = pythonOlder "3.7.1"; + disabled = pythonOlder "3.8"; # don't try and fail to strip 6600+ python files, it takes minutes! dontStrip = true; @@ -80,7 +80,7 @@ in with py.pkgs; buildPythonApplication rec { owner = "home-assistant"; repo = "core"; rev = version; - sha256 = "0s1jcd94wwvmvzq86w8s9dwfvnmjs9l661z9pc6kwgagggjjgd8c"; + sha256 = "09z2sds9my4vq0vmryjpzi7fv787zjfikfkd711d34c140bgcjch"; }; # leave this in, so users don't have to constantly update their downstream patch handling @@ -88,15 +88,15 @@ in with py.pkgs; buildPythonApplication rec { postPatch = '' substituteInPlace setup.py \ + --replace "aiohttp==3.7.4" "aiohttp>=3.7.3" \ --replace "attrs==19.3.0" "attrs>=19.3.0" \ --replace "bcrypt==3.1.7" "bcrypt>=3.1.7" \ - --replace "awesomeversion==21.2.2" "awesomeversion>=21.2.2" \ - --replace "cryptography==3.2" "cryptography" \ + --replace "cryptography==3.3.2" "cryptography" \ --replace "httpx==0.16.1" "httpx>=0.16.1" \ + --replace "jinja2>=2.11.3" "jinja2>=2.11.2" \ --replace "pip>=8.0.3,<20.3" "pip" \ - --replace "pytz>=2020.5" "pytz>=2020.4" \ + --replace "pytz>=2021.1" "pytz>=2020.5" \ --replace "pyyaml==5.4.1" "pyyaml" \ - --replace "requests==2.25.1" "requests>=2.25.0" \ --replace "ruamel.yaml==0.15.100" "ruamel.yaml>=0.15.100" substituteInPlace tests/test_config.py --replace '"/usr"' '"/build/media"' ''; @@ -127,6 +127,8 @@ in with py.pkgs; buildPythonApplication rec { yarl ] ++ componentBuildInputs ++ extraBuildInputs; + makeWrapperArgs = lib.optional skipPip "--add-flags --skip-pip"; + # upstream only tests on Linux, so do we. doCheck = stdenv.isLinux; @@ -134,78 +136,207 @@ in with py.pkgs; buildPythonApplication rec { # test infrastructure asynctest pytest-aiohttp + pytest-rerunfailures pytest-xdist pytestCheckHook requests-mock # component dependencies pyotp + respx ] ++ lib.concatMap (component: getPackages component py.pkgs) componentTests; - # We cannot test all components, since they'd introduce lots of dependencies, some of which are unpackaged, - # but we should test very common stuff, like what's in `default_config`. - # https://github.com/home-assistant/core/commits/dev/homeassistant/components/default_config/manifest.json + # We can reasonably test components that don't communicate with any network + # services. Before adding new components to this list make sure we have all + # its dependencies packaged and listed in ./component-packages.nix. componentTests = [ + "alert" "api" + "auth" "automation" + "bayesian" + "binary_sensor" + "caldav" + "calendar" + "camera" + "climate" + "cloud" + "command_line" "config" "configurator" + "conversation" "counter" + "cover" "default_config" "demo" + "derivative" + "device_automation" + "device_sun_light_trigger" + "device_tracker" "dhcp" "discovery" + "emulated_hue" + "esphome" + "fan" + "faa_delays" + "ffmpeg" + "file" + "filesize" + "filter" + "flux" + "folder" + "folder_watcher" + "fritzbox" + "fritzbox_callmonitor" "frontend" + "generic" + "generic_thermostat" + "geo_json_events" + "geo_location" "group" + "hddtemp" "history" + "history_stats" + "homekit_controller" "homeassistant" + "html5" "http" "hue" + "ifttt" + "image" + "image_processing" + "influxdb" "input_boolean" "input_datetime" "input_text" "input_number" "input_select" + "intent" + "intent_script" + "ipp" + "kmtronic" + "light" + "local_file" + "local_ip" + "lock" "logbook" + "logentries" "logger" + "lovelace" + "manual" + "manual_mqtt" + "mazda" + "media_player" "media_source" + "met" "mobile_app" + "modbus" + "moon" + "mqtt" + "mqtt_eventstream" + "mqtt_json" + "mqtt_room" + "mqtt_statestream" + "mullvad" + "notify" + "number" + "ozw" + "panel_custom" + "panel_iframe" + "persistent_notification" "person" + "plaato" + "prometheus" + "proximity" + "push" + "python_script" + "random" + "recorder" + "rest" + "rest_command" + "rituals_perfume_genie" + "rmvtransport" + "rss_feed_template" + "safe_mode" "scene" "script" + "search" "shell_command" + "shopping_list" + "simulated" + "sensor" + "smarttub" + "smtp" + "sql" "ssdp" + "stream" "sun" + "switch" "system_health" "system_log" "tag" + "tasmota" + "tcp" + "template" + "threshold" + "time_date" "timer" + "tod" + "tts" + "universal" + "updater" + "upnp" + "uptime" + "vacuum" + "weather" "webhook" "websocket_api" + "wled" + "workday" + "worldclock" "zeroconf" + "zha" "zone" "zwave" ]; pytestFlagsArray = [ # limit amout of runners to reduce race conditions - "-n 2" + "-n auto" + # retry racy tests that end in "RuntimeError: Event loop is closed" + "--reruns 3" + "--only-rerun RuntimeError" # assign tests grouped by file to workers "--dist loadfile" - # don't bulk test all components - "--ignore tests/components" - # pyotp since v2.4.0 complains about the short mock keys, hass pins v2.3.0 - "--ignore tests/auth/mfa_modules/test_notify.py" + # tests are located in tests/ "tests" + # dynamically add packages required for component tests ] ++ map (component: "tests/components/" + component) componentTests; + disabledTestPaths = [ + # don't bulk test all components + "tests/components" + # pyotp since v2.4.0 complains about the short mock keys, hass pins v2.3.0 + "tests/auth/mfa_modules/test_notify.py" + ]; + disabledTests = [ # AssertionError: assert 1 == 0 + "test_error_posted_as_event" "test_merge" # ModuleNotFoundError: No module named 'pyqwikswitch' "test_merge_id_schema" # keyring.errors.NoKeyringError: No recommended backend was available. "test_secrets_from_unrelated_fails" "test_secrets_credstash" + # generic/test_camera.py: AssertionError: 500 == 200 + "test_fetching_without_verify_ssl" + "test_fetching_url_with_verify_ssl" + ] ++ lib.optionals (stdenv.isAarch64) [ + # tests getting stuck on aarch64 + # components/stream/test_hls.py + "test_stream_ended" + # components/stream/test_recorder.py + "test_record_stream" ]; preCheck = '' @@ -213,8 +344,6 @@ in with py.pkgs; buildPythonApplication rec { mkdir /build/media ''; - makeWrapperArgs = lib.optional skipPip "--add-flags --skip-pip"; - passthru = { inherit (py.pkgs) hass-frontend; tests = { diff --git a/pkgs/servers/home-assistant/frontend.nix b/pkgs/servers/home-assistant/frontend.nix index 812f4d096ce..6a4f4420ff1 100644 --- a/pkgs/servers/home-assistant/frontend.nix +++ b/pkgs/servers/home-assistant/frontend.nix @@ -4,11 +4,11 @@ buildPythonPackage rec { # the frontend version corresponding to a specific home-assistant version can be found here # https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/frontend/manifest.json pname = "home-assistant-frontend"; - version = "20210127.7"; + version = "20210302.5"; src = fetchPypi { inherit pname version; - sha256 = "sha256-N+n1DI1oZ/j+GydH+Du21zTNA6leW4YBri7cAMvAac4="; + sha256 = "sha256-+SKXLOuvMYfNyR++uQMMY4M5deRgm2w3AhMM/DP470k="; }; # there is nothing to strip in this package |