Merge pull request #162529 from mweinelt/home-assistant

This commit is contained in:
Martin Weinelt 2022-03-05 02:58:19 +01:00 committed by GitHub
commit cf805d3b9e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
23 changed files with 272 additions and 98 deletions

View file

@ -2,8 +2,6 @@ import ./make-test-python.nix ({ pkgs, lib, ... }:
let
configDir = "/var/lib/foobar";
mqttUsername = "homeassistant";
mqttPassword = "secret";
in {
name = "home-assistant";
meta.maintainers = lib.teams.home-assistant.members;
@ -11,18 +9,6 @@ in {
nodes.hass = { pkgs, ... }: {
environment.systemPackages = with pkgs; [ mosquitto ];
services.mosquitto = {
enable = true;
listeners = [ {
users = {
"${mqttUsername}" = {
acl = [ "readwrite #" ];
password = mqttPassword;
};
};
} ];
};
services.postgresql = {
enable = true;
ensureDatabases = [ "hass" ];
@ -76,23 +62,6 @@ in {
# https://www.home-assistant.io/integrations/frontend/
frontend = {};
# configure an mqtt broker connection
# https://www.home-assistant.io/integrations/mqtt
mqtt = {
broker = "127.0.0.1";
username = mqttUsername;
password = mqttPassword;
};
# create a mqtt sensor that syncs state with its mqtt topic
# https://www.home-assistant.io/integrations/sensor.mqtt/
binary_sensor = [ {
platform = "mqtt";
state_topic = "home-assistant/test";
payload_on = "let_there_be_light";
payload_off = "off";
} ];
# set up a wake-on-lan switch to test capset capability required
# for the ping suid wrapper
# https://www.home-assistant.io/integrations/wake_on_lan/
@ -109,11 +78,9 @@ in {
listen_port = 80;
};
# show mqtt interaction in the log
# https://www.home-assistant.io/integrations/logger/
logger = {
default = "info";
logs."homeassistant.components.mqtt" = "debug";
};
};
@ -167,12 +134,6 @@ in {
hass.wait_for_open_port(8123)
hass.succeed("curl --fail http://localhost:8123/lovelace")
with subtest("Toggle a binary sensor using MQTT"):
hass.wait_for_open_port(1883)
hass.succeed(
"mosquitto_pub -V mqttv5 -t home-assistant/test -u ${mqttUsername} -P '${mqttPassword}' -m let_there_be_light"
)
with subtest("Check that capabilities are passed for emulated_hue to bind to port 80"):
hass.wait_for_open_port(80)
hass.succeed("curl --fail http://localhost:80/description.xml")
@ -188,10 +149,6 @@ in {
with subtest("Check that no errors were logged"):
assert "ERROR" not in output_log
# example line: 2020-06-20 10:01:32 DEBUG (MainThread) [homeassistant.components.mqtt] Received message on home-assistant/test: b'let_there_be_light'
with subtest("Check we received the mosquitto message"):
assert "let_there_be_light" in output_log
with subtest("Check systemd unit hardening"):
hass.log(hass.succeed("systemctl cat home-assistant.service"))
hass.log(hass.succeed("systemd-analyze security home-assistant.service"))

View file

@ -12,7 +12,7 @@
buildPythonPackage rec {
pname = "aiodiscover";
version = "1.4.7";
version = "1.4.8";
format = "setuptools";
disabled = pythonOlder "3.7";
@ -21,7 +21,7 @@ buildPythonPackage rec {
owner = "bdraco";
repo = pname;
rev = "v${version}";
sha256 = "sha256-NtiShZpPFl+elYNPLaKAg6uV8pDJv0pyR+NTUiFoMm0=";
sha256 = "sha256-ts3PnL1ePWJHHaLuC0eQKqBOt+HeEeAayeVBAIhnUWs=";
};
propagatedBuildInputs = [

View file

@ -12,7 +12,7 @@
buildPythonPackage rec {
pname = "aiohomekit";
version = "0.6.11";
version = "0.7.15";
format = "pyproject";
disabled = pythonOlder "3.7";
@ -21,7 +21,7 @@ buildPythonPackage rec {
owner = "Jc2k";
repo = pname;
rev = version;
sha256 = "1rrdzzb2gcl3lc8l5vb99hy2lmdj5723fds2q78n4sf83y93czw7";
sha256 = "sha256-na94H1ll9aZz/mQ4/y3b2vhSaOgo4OjtIsAfW6zGYyI=";
};
nativeBuildInputs = [
@ -34,6 +34,8 @@ buildPythonPackage rec {
zeroconf
];
doCheck = lib.versionAtLeast pytest-aiohttp.version "1.0.0";
checkInputs = [
pytest-aiohttp
pytestCheckHook

View file

@ -8,14 +8,14 @@
buildPythonPackage rec {
pname = "aiohue";
version = "4.2.1";
version = "4.3.0";
format = "setuptools";
disabled = pythonOlder "3.8";
src = fetchPypi {
inherit pname version;
hash = "sha256-bcSCYNJt9xYBMmuZYM6s+PWV0TAUFOn3ibHE0KRX+iw=";
hash = "sha256-PslmDeG/o9WAOc0FhidUNaISrlXa3rba3UEuvPVN/+A=";
};
propagatedBuildInputs = [

View file

@ -46,6 +46,11 @@ buildPythonPackage rec {
pytestCheckHook
];
disabledTests = [
# Failures seem related to changes in holidays-0.13, https://github.com/azogue/aiopvpc/issues/44
"test_number_of_national_holidays"
];
postPatch = ''
substituteInPlace pyproject.toml --replace \
" --cov --cov-report term --cov-report html" ""

View file

@ -8,7 +8,7 @@
buildPythonPackage rec {
pname = "aioshelly";
version = "1.0.10";
version = "1.0.11";
format = "setuptools";
disabled = pythonOlder "3.8";
@ -17,7 +17,7 @@ buildPythonPackage rec {
owner = "home-assistant-libs";
repo = pname;
rev = version;
hash = "sha256-YHdHh7uC9QF+dj+SI2Y4rEkBq+gGalNBmuWFVgq7XOM=";
hash = "sha256-N+8vmB41AUu4aTUTBYX6SPVsW1PARaq5mCOdhg9h0/g=";
};
propagatedBuildInputs = [

View file

@ -0,0 +1,33 @@
{ lib
, buildPythonPackage
, fetchPypi
, aiohttp
}:
buildPythonPackage rec {
pname = "asyncsleepiq";
version = "1.1.0";
format = "setuptools";
src = fetchPypi {
inherit pname version;
sha256 = "93c944ff84fd23832b188320b10681a3b1caf935dd584cdd4e508a9bcc8fec1b";
};
propagatedBuildInputs = [
aiohttp
];
# upstream has no tests
doCheck = false;
pythonImportsCheck = [ "asyncsleepiq" ];
meta = with lib; {
description = "Async interface to SleepIQ API";
homepage = "https://github.com/kbickar/asyncsleepiq";
license = licenses.mit;
maintainers = with maintainers; [ dotlambda ];
};
}

View file

@ -11,7 +11,7 @@
buildPythonPackage rec {
pname = "elkm1-lib";
version = "1.0.0";
version = "1.2.0";
format = "pyproject";
disabled = pythonOlder "3.6";
@ -20,7 +20,7 @@ buildPythonPackage rec {
owner = "gwww";
repo = "elkm1";
rev = version;
sha256 = "04xidix6l5d9rqfwp6cmj6wvais04nlvz5ynp0zwgyjp9sh2nhp6";
hash = "sha256-+rFW7qFpay/ebUz9EEB8nn0kuqVtVmG5ZHOWG2bMPts=";
};
nativeBuildInputs = [
@ -36,15 +36,6 @@ buildPythonPackage rec {
pytestCheckHook
];
patches = [
# Switch to poetry-core, https://github.com/gwww/elkm1/pull/45
(fetchpatch {
name = "switch-to-poetry-core.patch";
url = "https://github.com/gwww/elkm1/commit/807a17268498298908bf82af4933b158b37c8f32.patch";
sha256 = "1539g8wsxppqj6dm6w81ps05frb8vrfaxahxn2cqs76zdhvly3p9";
})
];
pythonImportsCheck = [ "elkm1_lib" ];
meta = with lib; {

View file

@ -0,0 +1,57 @@
{ lib
, buildPythonPackage
, pythonOlder
, fetchFromGitHub
, poetry-core
, aiohttp
, yarl
, aresponses
, pytest-asyncio
, pytestCheckHook
}:
buildPythonPackage rec {
pname = "gridnet";
version = "4.0.0";
disabled = pythonOlder "3.9";
format = "pyproject";
src = fetchFromGitHub {
owner = "klaasnicolaas";
repo = "python-gridnet";
rev = "v${version}";
hash = "sha256-Ihs8qUx50tAUcRBsVArRhzoLcQUi1vbYh8sPyK75AEk=";
};
postPatch = ''
substituteInPlace pyproject.toml \
--replace "0.0.0" "${version}" \
--replace "--cov" ""
'';
nativeBuildInputs = [
poetry-core
];
propagatedBuildInputs = [
aiohttp
yarl
];
checkInputs = [
aresponses
pytest-asyncio
pytestCheckHook
];
pythonImportsCheck = [ "gridnet" ];
meta = with lib; {
description = "Asynchronous Python client for NET2GRID devices";
homepage = "https://github.com/klaasnicolaas/python-gridnet";
license = licenses.mit;
maintainers = with maintainers; [ dotlambda ];
};
}

View file

@ -15,13 +15,13 @@
buildPythonPackage rec {
pname = "hass-nabucasa";
version = "0.52.0";
version = "0.54.0";
src = fetchFromGitHub {
owner = "nabucasa";
repo = pname;
rev = version;
sha256 = "sha256-mTbNuER26BPQIjcmlpkdFNeBcNF1vTldaNpoEla0XbM=";
sha256 = "sha256-UL7HPmii65p+WO22y0qv8zq3yICKarRORqE+FK1u7OE=";
};
postPatch = ''
@ -41,6 +41,8 @@ buildPythonPackage rec {
warrant
];
doCheck = lib.versionAtLeast pytest-aiohttp.version "1.0.0";
checkInputs = [
asynctest
pytest-aiohttp

View file

@ -11,14 +11,14 @@
buildPythonPackage rec {
pname = "holidays";
version = "0.12";
version = "0.13";
format = "setuptools";
disabled = pythonOlder "3.6";
src = fetchPypi {
inherit pname version;
sha256 = "d99f2b6ddc5bfab7b7f8bbed457a82104f8980122a04b982bfc0e4f8820a1d46";
sha256 = "sha256-xvfDq4ralIBnAtqTHZTTfNYbz6kstNOdNRtqnFIQZ1w=";
};
propagatedBuildInputs = [

View file

@ -10,7 +10,7 @@
buildPythonPackage rec {
pname = "pydeconz";
version = "86";
version = "87";
format = "setuptools";
disabled = pythonOlder "3.7";
@ -19,7 +19,7 @@ buildPythonPackage rec {
owner = "Kane610";
repo = "deconz";
rev = "v${version}";
sha256 = "sha256-NqNXbF5rGMCbugzZY+AQPPHYmQx/RrSwqtnoF1shSSU=";
sha256 = "sha256-scNTHbUL8TOhkUJyib4cgL8A4gZ73asmFLi8aGw3sX8=";
};
propagatedBuildInputs = [

View file

@ -1,15 +1,18 @@
{ lib
, aiohttp
, aresponses
, buildPythonPackage
, fetchFromGitHub
, iso4217
, pytest-asyncio
, pytestCheckHook
, pythonOlder
, pytz
}:
buildPythonPackage rec {
pname = "pyefergy";
version = "0.1.5";
version = "22.1.1";
format = "setuptools";
disabled = pythonOlder "3.8";
@ -18,7 +21,7 @@ buildPythonPackage rec {
owner = "tkdrob";
repo = pname;
rev = version;
sha256 = "sha256-8xcKgsZ6buaQdrKD8Qn7jB5IlQ0NkR0nZGuFk+Dd8Q8=";
sha256 = "sha256-AdoM+PcVoajxhnEfkyN9UuNufChu8XGmZDLNC3mjrps=";
};
propagatedBuildInputs = [
@ -27,10 +30,15 @@ buildPythonPackage rec {
pytz
];
# Project has no tests
doCheck = false;
checkInputs = [
aresponses
pytest-asyncio
pytestCheckHook
];
pythonImportsCheck = [ "pyefergy" ];
pythonImportsCheck = [
"pyefergy"
];
meta = with lib; {
description = "Python API library for Efergy energy meters";

View file

@ -7,7 +7,7 @@
buildPythonPackage rec {
pname = "pynina";
version = "0.1.4";
version = "0.1.7";
format = "setuptools";
disabled = pythonOlder "3.7";
@ -15,7 +15,7 @@ buildPythonPackage rec {
src = fetchPypi {
pname = "PyNINA";
inherit version;
sha256 = "1q382b70ydzzbqb9sa5y5w7039rp6q0wyffarrsdw916kbc4zyqd";
sha256 = "sha256-7sceYmzOmXJMKaIdGmXMuCAum0aJeVTxx1w/jZy5Eig=";
};
propagatedBuildInputs = [

View file

@ -0,0 +1,67 @@
{ lib
, buildPythonPackage
, pythonOlder
, fetchFromGitHub
, poetry-core
, aiodns
, aiohttp
, awesomeversion
, backoff
, cachetools
, pycountry
, pydantic
, yarl
, pytest-asyncio
, pytestCheckHook
}:
buildPythonPackage rec {
pname = "radios";
version = "0.1.0";
disabled = pythonOlder "3.9";
format = "pyproject";
src = fetchFromGitHub {
owner = "frenck";
repo = "python-radios";
rev = "v${version}";
hash = "sha256-3xRtOGY9DYnZN0g95213vWDbO3/XZZ5+s7A9sqNmO/w=";
};
postPatch = ''
substituteInPlace pyproject.toml \
--replace "0.0.0" "${version}" \
--replace "--cov" ""
'';
nativeBuildInputs = [
poetry-core
];
propagatedBuildInputs = [
aiodns
aiohttp
awesomeversion
backoff
cachetools
pycountry
pydantic
yarl
];
checkInputs = [
pytest-asyncio
pytestCheckHook
];
pythonImportsCheck = [ "radios" ];
meta = with lib; {
description = "Asynchronous Python client for the Radio Browser API";
homepage = "https://github.com/frenck/python-radios";
license = licenses.mit;
maintainers = with maintainers; [ dotlambda ];
};
}

View file

@ -11,13 +11,13 @@
buildPythonPackage rec {
pname = "snitun";
version = "0.30.0";
version = "0.31.0";
src = fetchFromGitHub {
owner = "NabuCasa";
repo = pname;
rev = version;
sha256 = "sha256-IjdgxX6ed9IWMFaMXIXQWZWoODrZBzXtMAcMOIhPFVQ=";
sha256 = "sha256-Ehafb35H462Ffn6omGh/MDJKQX5qJJZeiIBO3n0IGlA=";
};
propagatedBuildInputs = [

View file

@ -9,13 +9,13 @@
buildPythonPackage rec {
pname = "zha-quirks";
version = "0.0.66";
version = "0.0.67";
src = fetchFromGitHub {
owner = "zigpy";
repo = "zha-device-handlers";
rev = version;
sha256 = "18g0i6b60ndfmbvdsx5pniq56fyc5k39ylp3sjhrfjcj434wvbvc";
sha256 = "sha256-qkXXrwqMEtfafHsXtlyy6HFwuo/8sOZuQ9SvGRJkGtA=";
};
propagatedBuildInputs = [

View file

@ -2,6 +2,7 @@
, aiohttp
, buildPythonPackage
, fetchFromGitHub
, pydantic
, pytest-aiohttp
, pytestCheckHook
, pythonOlder
@ -9,7 +10,7 @@
buildPythonPackage rec {
pname = "zwave-js-server-python";
version = "0.34.0";
version = "0.35.1";
format = "setuptools";
disabled = pythonOlder "3.8";
@ -18,13 +19,16 @@ buildPythonPackage rec {
owner = "home-assistant-libs";
repo = pname;
rev = version;
sha256 = "sha256-hqq/CYlM9ZahDiH3iFLFzfE22CB19WQnFIDt+gCrEXU=";
sha256 = "sha256-WmpXQttcQ3Z/SFkNPfmvPWPGzWectQBoI9+bL2QYeaY=";
};
propagatedBuildInputs = [
aiohttp
pydantic
];
doCheck = lib.versionAtLeast pytest-aiohttp.version "1.0.0";
checkInputs = [
pytest-aiohttp
pytestCheckHook

View file

@ -2,7 +2,7 @@
# Do not edit!
{
version = "2022.2.9";
version = "2022.3.1";
components = {
"abode" = ps: with ps; [ abodepy ];
"accuweather" = ps: with ps; [ accuweather ];
@ -44,7 +44,6 @@
"apache_kafka" = ps: with ps; [ aiokafka ];
"apcupsd" = ps: with ps; [ apcaccess ];
"api" = ps: with ps; [ aiohttp-cors ];
"apns" = ps: with ps; [ ]; # missing inputs: apns2
"apple_tv" = ps: with ps; [ aiohttp-cors ifaddr pyatv zeroconf ];
"apprise" = ps: with ps; [ apprise ];
"aprs" = ps: with ps; [ aprslib geopy ];
@ -166,7 +165,7 @@
"deconz" = ps: with ps; [ pydeconz ];
"decora" = ps: with ps; [ bluepy ]; # missing inputs: decora
"decora_wifi" = ps: with ps; [ ]; # missing inputs: decora_wifi
"default_config" = ps: with ps; [ pynacl pyturbojpeg aiodiscover aiohttp-cors async-upnp-client emoji hass-nabucasa home-assistant-frontend ifaddr pillow pyserial pyudev scapy sqlalchemy zeroconf ];
"default_config" = ps: with ps; [ pynacl pyturbojpeg aiodiscover aiohttp-cors async-upnp-client hass-nabucasa home-assistant-frontend ifaddr pillow pyserial pyudev scapy sqlalchemy zeroconf ];
"delijn" = ps: with ps; [ pydelijn ];
"deluge" = ps: with ps; [ deluge-client ];
"demo" = ps: with ps; [ aiohttp-cors sqlalchemy ];
@ -188,12 +187,13 @@
"digitalloggers" = ps: with ps; [ ]; # missing inputs: dlipower
"directv" = ps: with ps; [ directv ];
"discogs" = ps: with ps; [ discogs-client ];
"discord" = ps: with ps; [ discordpy ];
"discord" = ps: with ps; [ nextcord ];
"discovery" = ps: with ps; [ aiohttp-cors ifaddr netdisco zeroconf ];
"dlib_face_detect" = ps: with ps; [ face_recognition ];
"dlib_face_identify" = ps: with ps; [ face_recognition ];
"dlink" = ps: with ps; [ ]; # missing inputs: pyW215
"dlna_dmr" = ps: with ps; [ aiohttp-cors async-upnp-client ifaddr zeroconf ];
"dlna_dms" = ps: with ps; [ aiohttp-cors async-upnp-client ifaddr zeroconf ];
"dnsip" = ps: with ps; [ aiodns ];
"dominos" = ps: with ps; [ aiohttp-cors ]; # missing inputs: pizzapi
"doods" = ps: with ps; [ pillow pydoods ];
@ -224,7 +224,7 @@
"eight_sleep" = ps: with ps; [ pyeight ];
"elgato" = ps: with ps; [ elgato ];
"eliqonline" = ps: with ps; [ eliqonline ];
"elkm1" = ps: with ps; [ elkm1-lib ];
"elkm1" = ps: with ps; [ aiohttp-cors elkm1-lib ifaddr ];
"elmax" = ps: with ps; [ elmax-api ];
"elv" = ps: with ps; [ pypca ];
"emby" = ps: with ps; [ pyemby ];
@ -273,6 +273,7 @@
"fireservicerota" = ps: with ps; [ pyfireservicerota ];
"firmata" = ps: with ps; [ pymata-express ];
"fitbit" = ps: with ps; [ aiohttp-cors fitbit ];
"fivem" = ps: with ps; [ ]; # missing inputs: fivem-api
"fixer" = ps: with ps; [ fixerio ];
"fjaraskupan" = ps: with ps; [ fjaraskupan ];
"fleetgo" = ps: with ps; [ ritassist ];
@ -324,7 +325,6 @@
"gitlab_ci" = ps: with ps; [ python-gitlab ];
"gitter" = ps: with ps; [ ]; # missing inputs: gitterpy
"glances" = ps: with ps; [ glances-api ];
"gntp" = ps: with ps; [ gntp ];
"goalfeed" = ps: with ps; [ ]; # missing inputs: pysher
"goalzero" = ps: with ps; [ goalzero ];
"gogogate2" = ps: with ps; [ ismartgate ];
@ -446,7 +446,7 @@
"kiwi" = ps: with ps; [ ]; # missing inputs: kiwiki-client
"kmtronic" = ps: with ps; [ pykmtronic ];
"knx" = ps: with ps; [ xknx ];
"kodi" = ps: with ps; [ pykodi ];
"kodi" = ps: with ps; [ aiohttp-cors pykodi ];
"konnected" = ps: with ps; [ aiohttp-cors konnected ];
"kostal_plenticore" = ps: with ps; [ ]; # missing inputs: kostal_plenticore
"kraken" = ps: with ps; [ krakenex pykrakenapi ];
@ -532,11 +532,12 @@
"minio" = ps: with ps; [ minio ];
"mitemp_bt" = ps: with ps; [ ]; # missing inputs: mitemp_bt
"mjpeg" = ps: with ps; [ ];
"mobile_app" = ps: with ps; [ pynacl pyturbojpeg aiohttp-cors emoji hass-nabucasa pillow ];
"mobile_app" = ps: with ps; [ pynacl pyturbojpeg aiohttp-cors hass-nabucasa pillow ];
"mochad" = ps: with ps; [ ]; # missing inputs: pymochad
"modbus" = ps: with ps; [ pymodbus ];
"modem_callerid" = ps: with ps; [ aiohttp-cors phone-modem pyserial pyudev ];
"modern_forms" = ps: with ps; [ aiomodernforms ];
"moehlenhoff_alpha2" = ps: with ps; [ ]; # missing inputs: moehlenhoff-alpha2
"mold_indicator" = ps: with ps; [ ];
"monoprice" = ps: with ps; [ ]; # missing inputs: pymonoprice
"moon" = ps: with ps; [ ];
@ -680,6 +681,7 @@
"proxy" = ps: with ps; [ pillow ];
"ps4" = ps: with ps; [ ]; # missing inputs: pyps4-2ndscreen
"pulseaudio_loopback" = ps: with ps; [ pulsectl ];
"pure_energie" = ps: with ps; [ gridnet ];
"push" = ps: with ps; [ aiohttp-cors ];
"pushbullet" = ps: with ps; [ pushbullet ];
"pushover" = ps: with ps; [ pushover-complete ];
@ -697,6 +699,7 @@
"qwikswitch" = ps: with ps; [ ]; # missing inputs: pyqwikswitch
"rachio" = ps: with ps; [ pyturbojpeg aiohttp-cors hass-nabucasa rachiopy ];
"radarr" = ps: with ps; [ ];
"radio_browser" = ps: with ps; [ radios ];
"radiotherm" = ps: with ps; [ radiotherm ];
"rainbird" = ps: with ps; [ ]; # missing inputs: pyrainbird
"raincloud" = ps: with ps; [ ]; # missing inputs: raincloudy
@ -791,7 +794,7 @@
"skybeacon" = ps: with ps; [ pygatt ];
"skybell" = ps: with ps; [ skybellpy ];
"slack" = ps: with ps; [ slackclient ];
"sleepiq" = ps: with ps; [ sleepyq ];
"sleepiq" = ps: with ps; [ asyncsleepiq ];
"slide" = ps: with ps; [ ]; # missing inputs: goslide-api
"sma" = ps: with ps; [ pysma ];
"smappee" = ps: with ps; [ aiohttp-cors pysmappee ];
@ -814,7 +817,7 @@
"soma" = ps: with ps; [ pysoma ];
"somfy" = ps: with ps; [ aiohttp-cors pymfy ];
"somfy_mylink" = ps: with ps; [ somfy-mylink-synergy ];
"sonarr" = ps: with ps; [ sonarr ];
"sonarr" = ps: with ps; [ aiopyarr ];
"songpal" = ps: with ps; [ python-songpal ];
"sonos" = ps: with ps; [ aiohttp-cors async-upnp-client ifaddr plexapi plexauth plexwebsocket soco spotipy zeroconf ];
"sony_projector" = ps: with ps; [ pysdcp ];
@ -924,7 +927,7 @@
"twilio_call" = ps: with ps; [ aiohttp-cors twilio ];
"twilio_sms" = ps: with ps; [ aiohttp-cors twilio ];
"twinkly" = ps: with ps; [ ttls ];
"twitch" = ps: with ps; [ python-twitch-client ];
"twitch" = ps: with ps; [ twitchapi ];
"twitter" = ps: with ps; [ twitterapi ];
"ubus" = ps: with ps; [ openwrt-ubus-rpc ];
"ue_smart_radio" = ps: with ps; [ ];
@ -990,6 +993,7 @@
"wilight" = ps: with ps; [ pywilight ];
"wirelesstag" = ps: with ps; [ ]; # missing inputs: wirelesstagpy
"withings" = ps: with ps; [ aiohttp-cors ]; # missing inputs: withings-api
"wiz" = ps: with ps; [ aiohttp-cors ifaddr pywizlight ];
"wled" = ps: with ps; [ wled ];
"wolflink" = ps: with ps; [ ]; # missing inputs: wolf_smartset
"workday" = ps: with ps; [ holidays ];
@ -998,7 +1002,6 @@
"worxlandroid" = ps: with ps; [ ];
"wsdot" = ps: with ps; [ ];
"x10" = ps: with ps; [ ];
"xbee" = ps: with ps; [ ]; # missing inputs: xbee-helper
"xbox" = ps: with ps; [ aiohttp-cors xbox-webapi ];
"xbox_live" = ps: with ps; [ xboxapi ];
"xeoma" = ps: with ps; [ pyxeoma ];
@ -1031,6 +1034,7 @@
"zoneminder" = ps: with ps; [ zm-py ];
"zwave" = ps: with ps; [ homeassistant-pyozw pydispatcher ];
"zwave_js" = ps: with ps; [ aiohttp-cors pyserial pyudev zwave-js-server-python ];
"zwave_me" = ps: with ps; [ aiohttp-cors ifaddr url-normalize zeroconf ]; # missing inputs: zwave_me_ws
};
# components listed in tests/components for which all dependencies are packaged
supportedComponentsWithTests = [
@ -1143,6 +1147,7 @@
"directv"
"discovery"
"dlna_dmr"
"dlna_dms"
"dnsip"
"doorbird"
"dsmr"
@ -1343,6 +1348,7 @@
"min_max"
"minecraft_server"
"minio"
"mjpeg"
"mobile_app"
"modbus"
"modem_callerid"
@ -1423,6 +1429,7 @@
"prometheus"
"prosegur"
"proximity"
"pure_energie"
"push"
"pushbullet"
"pvoutput"
@ -1431,6 +1438,7 @@
"qld_bushfire"
"rachio"
"radarr"
"radio_browser"
"rainforest_eagle"
"rainmachine"
"random"
@ -1459,6 +1467,7 @@
"safe_mode"
"samsungtv"
"scene"
"scrape"
"screenlogic"
"script"
"search"
@ -1605,6 +1614,7 @@
"whois"
"wiffi"
"wilight"
"wiz"
"wled"
"workday"
"worldclock"

View file

@ -31,6 +31,26 @@ let
# Override the version of some packages pinned in Home Assistant's setup.py and requirements_all.txt
(mkOverride "python-slugify" "4.0.1" "69a517766e00c1268e5bbfc0d010a0a8508de0b18d30ad5a1ff357f8ae724270")
# pytest-aiohttp>0.3.0 breaks home-assistant tests
(self: super: {
pytest-aiohttp = super.pytest-aiohttp.overridePythonAttrs (oldAttrs: rec {
version = "0.3.0";
src = oldAttrs.src.override {
inherit version;
sha256 = "0kx4mbs9bflycd8x9af0idcjhdgnzri3nw1qb0vpfyb3751qaaf9";
};
});
aiohomekit = super.aiohomekit.overridePythonAttrs (oldAttrs: {
doCheck = false; # requires aiohttp>=1.0.0
});
hass-nabucasa = super.hass-nabucasa.overridePythonAttrs (oldAttrs: {
doCheck = false; # requires aiohttp>=1.0.0
});
zwave-js-server-python = super.zwave-js-server-python.overridePythonAttrs (oldAttrs: {
doCheck = false; # requires aiohttp>=1.0.0
});
})
(self: super: {
huawei-lte-api = super.huawei-lte-api.overridePythonAttrs (oldAttrs: rec {
version = "1.4.18";
@ -138,7 +158,7 @@ let
extraPackagesFile = writeText "home-assistant-packages" (lib.concatMapStringsSep "\n" (pkg: pkg.pname) extraBuildInputs);
# Don't forget to run parse-requirements.py after updating
hassVersion = "2022.2.9";
hassVersion = "2022.3.1";
in python.pkgs.buildPythonApplication rec {
pname = "homeassistant";
@ -156,7 +176,7 @@ in python.pkgs.buildPythonApplication rec {
owner = "home-assistant";
repo = "core";
rev = version;
hash = "sha256-So/MAKyFVa1TchrVE4ego1fRbgOXCoXR3w/rJLFSBqI=";
hash = "sha256-bihb6DL8hQuRnJZp39Lh2qfTXr0tFxn7FHFZewttNOc=";
};
# leave this in, so users don't have to constantly update their downstream patch handling
@ -217,6 +237,8 @@ in python.pkgs.buildPythonApplication rec {
yarl
# Not in setup.py, but used in homeassistant/util/package.py
setuptools
# Not in setup.py, but uncounditionally imported via tests/conftest.py
paho-mqtt
] ++ componentBuildInputs ++ extraBuildInputs;
makeWrapperArgs = lib.optional skipPip "--add-flags --skip-pip";

View file

@ -4,7 +4,7 @@ buildPythonPackage rec {
# the frontend version corresponding to a specific home-assistant version can be found here
# https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/frontend/manifest.json
pname = "home-assistant-frontend";
version = "20220203.1";
version = "20220301.0";
format = "wheel";
src = fetchPypi {
@ -12,7 +12,7 @@ buildPythonPackage rec {
pname = "home_assistant_frontend";
dist = "py3";
python = "py3";
sha256 = "sha256-6+TzBhHo9+eo6Hlk8RF+BAt4O0i759iAN+dKAPDmTNY=";
sha256 = "sha256-Gshw8GIiZfFHmldvxBhUKZ5NFWuBIA6ug7m7eEfQ+ao=";
};
# there is nothing to strip in this package

View file

@ -11,8 +11,9 @@ let
config = [ pydispatcher ];
generic = [ ha-av ];
google_translate = [ mutagen ];
lovelace = [ PyChromecast ];
nest = [ ha-av ];
onboarding = [ pymetno rpi-bad-power ];
onboarding = [ pymetno radios rpi-bad-power ];
version = [ aioaseko ];
voicerss = [ mutagen ];
yandextts = [ mutagen ];
@ -28,6 +29,13 @@ let
];
};
extraDisabledTests = {
roku = [
# homeassistant.components.roku.media_player:media_player.py:428 Media type music is not supported with format None (mime: audio/x-matroska)
"test_services_play_media_audio"
];
};
extraPytestFlagsArray = {
asuswrt = [
# asuswrt/test_config_flow.py: Sandbox network limitations, fails with unexpected error
@ -45,6 +53,7 @@ in lib.listToAttrs (map (component: lib.nameValuePair component (
++ home-assistant.getPackages component home-assistant.python.pkgs
++ extraCheckInputs.${component} or [ ];
disabledTests = old.disabledTests ++ extraDisabledTests.${component} or [];
disabledTestPaths = old.disabledTestPaths ++ extraDisabledTestPaths.${component} or [ ];
pytestFlagsArray = lib.remove "tests" old.pytestFlagsArray
@ -59,6 +68,7 @@ in lib.listToAttrs (map (component: lib.nameValuePair component (
broken = lib.elem component [
"airtouch4"
"dnsip"
"zwave"
];
# upstream only tests on Linux, so do we.
platforms = lib.platforms.linux;

View file

@ -714,6 +714,8 @@ in {
asyncpg = callPackage ../development/python-modules/asyncpg { };
asyncsleepiq = callPackage ../development/python-modules/asyncsleepiq { };
asyncssh = callPackage ../development/python-modules/asyncssh { };
asyncstdlib = callPackage ../development/python-modules/asyncstdlib { };
@ -3577,6 +3579,8 @@ in {
growattserver = callPackage ../development/python-modules/growattserver { };
gridnet = callPackage ../development/python-modules/gridnet { };
grip = callPackage ../development/python-modules/grip { };
groestlcoin_hash = callPackage ../development/python-modules/groestlcoin_hash { };
@ -8569,6 +8573,8 @@ in {
radio_beam = callPackage ../development/python-modules/radio_beam { };
radios = callPackage ../development/python-modules/radios { };
radiotherm = callPackage ../development/python-modules/radiotherm { };
radish-bdd = callPackage ../development/python-modules/radish-bdd { };