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