From 240b97dce98ed0d2b78a19a2a57102bf9e7e0472 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kier=C3=A1n=20Meinhardt?= Date: Sat, 24 Oct 2020 13:27:36 +0200 Subject: [PATCH] feat(lib): add localAddresses --- configs/default.nix | 15 ++++++---- configs/printing.nix | 6 ++-- configs/traadfri.nix | 9 ++++-- lib/default.nix | 12 ++++++++ systems/toum/hass/default.nix | 4 ++- systems/toum/hass/zigbee.nix | 53 +++++++++++++++++++++++++---------- 6 files changed, 73 insertions(+), 26 deletions(-) create mode 100644 lib/default.nix diff --git a/configs/default.nix b/configs/default.nix index 7940512..fbb947c 100644 --- a/configs/default.nix +++ b/configs/default.nix @@ -1,5 +1,7 @@ { pkgs, lib, config, options, ... }: -let inherit (lib.strings) makeBinPath; +let + inherit (lib.strings) makeBinPath; + inherit (import ) localAddresses; in { imports = [ @@ -222,11 +224,6 @@ in { environment.systemPackages = [ pkgs.wpa_supplicant_gui ]; } - { - networking.hosts = { - "192.168.178.1" = [ "fritz.box" ]; - }; - } { i18n.defaultLocale = "en_GB.UTF-8"; } { services.illum.enable = true; } { @@ -266,6 +263,12 @@ in { helpLine = lib.mkForce ""; }; } + { + networking.hosts = lib.mapAttrs' (name: address: { + name = address; + value = [ "${name}.local" ]; + }) localAddresses; + } ./alacritty.nix ./bash.nix ./bluetooth.nix diff --git a/configs/printing.nix b/configs/printing.nix index 9cb7e81..266d886 100644 --- a/configs/printing.nix +++ b/configs/printing.nix @@ -1,5 +1,7 @@ { pkgs, ... }: -let hp-driver = pkgs.hplipWithPlugin; +let + inherit (import ) localAddresses; + hp-driver = pkgs.hplipWithPlugin; in { services.printing = { enable = true; @@ -16,7 +18,7 @@ in { hardware.printers.ensurePrinters = [{ name = "OfficeJet"; location = "Zimmer"; - deviceUri = "https://192.168.178.27"; + deviceUri = "https://${localAddresses.officejet}"; model = "drv:///hp/hpcups.drv/hp-officejet_4650_series.ppd"; ppdOptions = { Duplex = "DuplexNoTumble"; # DuplexNoTumble DuplexTumble None diff --git a/configs/traadfri.nix b/configs/traadfri.nix index deaf863..d68dd96 100644 --- a/configs/traadfri.nix +++ b/configs/traadfri.nix @@ -1,10 +1,15 @@ -{ pkgs, lib, ... }: { +{ pkgs, lib, ... }: +let + inherit (import ) localAddresses; + living-room-id = 131086; +in +{ imports = [ ]; niveum.traadfri = { enable = true; user = "kmein"; - host = "192.168.178.28"; + host = localAddresses.tradfri; key = lib.strings.fileContents ; rooms = { corridor = 131080; diff --git a/lib/default.nix b/lib/default.nix new file mode 100644 index 0000000..d26eba0 --- /dev/null +++ b/lib/default.nix @@ -0,0 +1,12 @@ +{ + localAddresses = { + toum = "192.168.178.24"; + homeros = "192.168.178.22"; + wilde = "192.168.178.32"; + android = "192.168.178.35"; + + tradfri = "192.168.178.28"; + officejet = "192.168.178.27"; + fritzbox = "192.168.178.1"; + }; +} diff --git a/systems/toum/hass/default.nix b/systems/toum/hass/default.nix index d483efd..49db344 100644 --- a/systems/toum/hass/default.nix +++ b/systems/toum/hass/default.nix @@ -1,6 +1,7 @@ { config, pkgs, lib, ... }: let inherit (import ./lib.nix) triggers; + inherit (import ) localAddresses; in { disabledModules = [ @@ -31,8 +32,9 @@ in discovery = {}; system_health = {}; history = {}; - tradfri.host = "192.168.178.28"; + # tradfri.host = localAddresses.tradfri; # dont use until python3Packages.pytradfri is packaged sun = {}; + mobile_app = {}; shopping_list = {}; sensor = [ { diff --git a/systems/toum/hass/zigbee.nix b/systems/toum/hass/zigbee.nix index 1107f17..52430b0 100644 --- a/systems/toum/hass/zigbee.nix +++ b/systems/toum/hass/zigbee.nix @@ -1,6 +1,22 @@ { config, pkgs, lib, ... }: let inherit (import ) genid; + inherit (import ) localAddresses; + zigbee2mqttDevice = "/dev/ttyACM0"; + + zigbee2mqttConfig = { + permit_join = false; + homeassistant = true; + serial.port = zigbee2mqttDevice; + mqtt = { + discovery = true; + base_topic = "zigbee"; + server = "mqtt://${localAddresses.toum}"; # Rasperry local IP + user = "albrecht"; + password = lib.strings.fileContents ; + }; + }; + zigbee2mqtt_cfg = pkgs.writeText "zigbee2mqtt.json" (builtins.toJSON zigbee2mqttConfig); in { disabledModules = [ @@ -8,30 +24,37 @@ in ]; imports = [ - - + + ]; + /* ids = { uids.zigbee2mqtt = genid "zigbee2mqtt"; gids.zigbee2mqtt = genid "zigbee2mqtt"; }; - services.zigbee2mqtt = { enable = true; + config = zigbee2mqttConfig; package = pkgs.unstable.zigbee2mqtt; - config = { - permit_join = true; - homeassistant = true; - serial.port = "/dev/ttyACM0"; - mqtt = { - discovery = true; - base_topic = "zigbee"; - server = "mqtt://192.168.178.24"; # Rasperry local IP - user = "albrecht"; - password = lib.strings.fileContents ; - }; - }; + }; + */ + + + system.activationScripts.installZigbee = '' + install -d /var/lib/zigbee2mqtt + install ${zigbee2mqtt_cfg} /var/lib/zigbee2mqtt/configuration.yaml + ''; + + # hack to restart docker container on config change + systemd.services.docker-zigbee2mqtt.environment.cfg = zigbee2mqtt_cfg; + + docker-containers.zigbee2mqtt = { + image = "koenkk/zigbee2mqtt"; + extraDockerOptions = [ + "--device=${zigbee2mqttDevice}:${zigbee2mqttDevice}" + ]; + volumes = ["/var/lib/zigbee2mqtt:/app/data"]; }; services.mosquitto = {