diff options
Diffstat (limited to 'lass/2configs/hass')
-rw-r--r-- | lass/2configs/hass/default.nix | 158 |
1 files changed, 91 insertions, 67 deletions
diff --git a/lass/2configs/hass/default.nix b/lass/2configs/hass/default.nix index 3cd6e0ebf..7765db84e 100644 --- a/lass/2configs/hass/default.nix +++ b/lass/2configs/hass/default.nix @@ -1,7 +1,29 @@ { config, lib, pkgs, ... }: with import ./lib.nix { inherit lib; }; +let + unstable = import (pkgs.fetchFromGitHub { + owner = "nixos"; + repo = "nixpkgs"; + rev = (lib.importJSON ../../../krebs/nixpkgs-unstable.json).rev; + sha256 = (lib.importJSON ../../../krebs/nixpkgs-unstable.json).sha256; + }) {}; + dwdwfsapi = pkgs.python3Packages.buildPythonPackage rec { + pname = "dwdwfsapi"; + version = "1.0.3"; -{ + src = pkgs.python3Packages.fetchPypi { + inherit pname version; + sha256 = "0fcv79xiq0qr4kivhd68iqpgrsjc7djxqs2h543pyr0sdgb5nz9x"; + }; + + buildInputs = with pkgs.python3Packages; [ + requests ciso8601 + ]; + + # LC_ALL = "en_US.UTF-8"; + }; + +in { imports = [ ./zigbee.nix ./rooms/bett.nix @@ -21,78 +43,80 @@ with import ./lib.nix { inherit lib; }; services.home-assistant = { enable = true; - package = pkgs.home-assistant.override { - # extraComponents = [ "hue" ]; + package = (unstable.home-assistant.overrideAttrs (old: { + doInstallCheck = false; + })).override { + extraPackages = _: [ dwdwfsapi ]; }; configWritable = true; lovelaceConfigWritable = true; - }; - - services.home-assistant.config = let - tasmota_s20 = name: topic: { - platform = "mqtt"; - inherit name; - state_topic = "stat/${topic}/POWER"; - command_topic = "cmnd/${topic}/POWER"; - payload_on = "ON"; - payload_off = "OFF"; - }; - in { - homeassistant = { - name = "Home"; - time_zone = "Europe/Berlin"; - latitude = "52.46187"; - longitude = "13.41489"; - elevation = 90; - unit_system = "metric"; - customize = friendly_names; - }; - config = {}; - sun.elevation = 66; - shopping_list = {}; - discovery = {}; - frontend = {}; - mqtt = { - broker = "localhost"; - port = 1883; - client_id = "home-assistant"; - username = "gg23"; - password = "gg23-mqtt"; - keepalive = 60; - protocol = 3.1; - - discovery = true; - birth_message = { - topic = "/hass/status"; - payload = "online"; + config = let + tasmota_s20 = name: topic: { + platform = "mqtt"; + inherit name; + state_topic = "stat/${topic}/POWER"; + command_topic = "cmnd/${topic}/POWER"; + payload_on = "ON"; + payload_off = "OFF"; + }; + in { + homeassistant = { + name = "Home"; + time_zone = "Europe/Berlin"; + latitude = "52.46187"; + longitude = "13.41489"; + elevation = 90; + unit_system = "metric"; + customize = friendly_names; }; - will_message = { - topic = "/hass/status"; - payload = "offline"; + config = {}; + sun.elevation = 66; + shopping_list = {}; + discovery = {}; + frontend = {}; + http = {}; + mqtt = { + broker = "localhost"; + port = 1883; + client_id = "home-assistant"; + username = "gg23"; + password = "gg23-mqtt"; + keepalive = 60; + protocol = 3.1; + + discovery = true; + birth_message = { + topic = "/hass/status"; + payload = "online"; + }; + will_message = { + topic = "/hass/status"; + payload = "offline"; + }; }; + sensor = [ + { + platform = "dwd_weather_warnings"; + region_name = "Berlin"; + } + ]; + switch = [ + (tasmota_s20 "TV" "tv") + (tasmota_s20 "Drucker Strom" "drucker") + (tasmota_s20 "Waschmaschine" "wasch") + (tasmota_s20 "Stereo Anlage" "stereo") + ]; + mobile_app = {}; + weather = [ + { + platform = "openweathermap"; + api_key = "xxx"; # TODO put into secrets + } + ]; + system_health = {}; + history = {}; + shopping_list = {}; }; - sensor = [ - { - platform = "dwd_weather_warnings"; - region_name = "Berlin"; - } - ]; - switch = [ - (tasmota_s20 "TV" "tv") - (tasmota_s20 "Drucker Strom" "drucker") - (tasmota_s20 "Waschmaschine" "wasch") - (tasmota_s20 "Stereo Anlage" "stereo") - ]; - mobile_app = {}; - weather = [ - { - platform = "openweathermap"; - api_key = "xxx"; # TODO put into secrets - } - ]; - system_health = {}; - history = {}; - shopping_list = {}; }; services.mosquitto = { |