aboutsummaryrefslogtreecommitdiff
path: root/nixos
diff options
context:
space:
mode:
authorKarel Kočí <cynerd@email.cz>2022-12-30 21:13:56 +0100
committerKarel Kočí <cynerd@email.cz>2022-12-30 21:13:56 +0100
commitef25d69c4d273765afd2ef86783e42bc98ca4b3d (patch)
tree13882154c7bdb305473aa7e9191917d31ec1c9f6 /nixos
parente09a2f8a23161e52859754e5cf874ec4099a2008 (diff)
downloadnixos-personal-ef25d69c4d273765afd2ef86783e42bc98ca4b3d.tar.gz
nixos-personal-ef25d69c4d273765afd2ef86783e42bc98ca4b3d.tar.bz2
nixos-personal-ef25d69c4d273765afd2ef86783e42bc98ca4b3d.zip
nixos: move home assistant around
Diffstat (limited to 'nixos')
-rw-r--r--nixos/default.nix2
-rw-r--r--nixos/machine/errol.nix9
-rw-r--r--nixos/machine/spt-mox.nix155
-rw-r--r--nixos/modules/default.nix5
-rw-r--r--nixos/modules/develop.nix2
-rw-r--r--nixos/modules/gaming.nix1
-rw-r--r--nixos/modules/home-assistant.nix175
-rw-r--r--nixos/modules/home-assistant/light.nix (renamed from nixos/machine/hass/light.nix)0
-rw-r--r--nixos/modules/home-assistant/sensors.nix (renamed from nixos/machine/hass/sensors.nix)0
-rw-r--r--nixos/modules/monitoring.nix4
10 files changed, 191 insertions, 162 deletions
diff --git a/nixos/default.nix b/nixos/default.nix
index 939d438..790ea40 100644
--- a/nixos/default.nix
+++ b/nixos/default.nix
@@ -1,6 +1,6 @@
self: let
- modules = import ./modules self.inputs.nixpkgs;
+ modules = import ./modules;
machines = import ./machine self;
in modules // machines // {
diff --git a/nixos/machine/errol.nix b/nixos/machine/errol.nix
index 835999a..70bc8cf 100644
--- a/nixos/machine/errol.nix
+++ b/nixos/machine/errol.nix
@@ -79,13 +79,18 @@ with lib;
port = 1883;
username = "homeassistant";
password = "!secret mqtt_password";
- sensor = import ./hass/sensors.nix;
- light = import ./hass/light.nix;
+ sensor = import ../modules/home-assistant/sensors.nix;
+ light = import ../modules/home-assistant/light.nix;
};
met = {};
default_config = {};
};
extraComponents = [];
+ package = pkgs.home-assistant.override {
+ extraPackages = pkgs: with pkgs; [
+ securetar
+ ];
+ };
};
};
diff --git a/nixos/machine/spt-mox.nix b/nixos/machine/spt-mox.nix
index 87d720f..57573ef 100644
--- a/nixos/machine/spt-mox.nix
+++ b/nixos/machine/spt-mox.nix
@@ -6,6 +6,7 @@ with lib;
{
config = {
+ cynerd.home-assistant = true;
environment.systemPackages = with pkgs; [
mosquitto
@@ -62,160 +63,6 @@ with lib;
dhcpcd.allowInterfaces = [ "brlan" ];
};
- services.mosquitto = {
- enable = true;
- listeners = [
- {
- users = {
- cynerd = {
- acl = ["readwrite #"];
- passwordFile = "/run/secrets/mosquitto.cynerd.pass";
- };
- bigclown = {
- acl = ["readwrite bigclown/#"];
- passwordFile = "/run/secrets/mosquitto.bigclown.pass";
- };
- homeassistant = {
- acl = [
- "readwrite bigclown/#"
- "readwrite homeassistant/#"
- ];
- passwordFile = "/run/secrets/mosquitto.homeassistant.pass";
- };
- };
- }
- ];
- };
- networking.firewall.allowedTCPPorts = [1883];
-
- services.bigclown = {
- gateway = {
- enable = true;
- device = "/dev/ttyUSB0";
- environmentFile = "/run/secrets/bigclown.env";
- baseTopicPrefix = "bigclown/";
- mqtt = {
- username = "bigclown";
- password = "@PASS_MQTT@";
- };
- };
- mqtt2influxdb = {
- enable = true;
- environmentFile = "/run/secrets/bigclown.env";
- mqtt = {
- username = "bigclown";
- password = "@PASS_MQTT@";
- };
- influxdb = {
- host = "cynerd.cz";
- database = "bigclown";
- username = "bigclown";
- password = "@PASS_INFLUXDB@";
- ssl = true;
- verify_ssl = false;
- };
- points = [
- {
- measurement = "temperature";
- topic = "bigclown/node/+/thermometer/+/temperature";
- fields.value = "$.payload";
- tags = {
- id = "$.topic[2]";
- channel = "$.topic[4]";
- };
- }
- {
- measurement = "relative-humidity";
- topic = "bigclown/node/+/hygrometer/+/relative-humidity";
- fields.value = "$.payload";
- tags = {
- id = "$.topic[2]";
- channel = "$.topic[4]";
- };
- }
- {
- measurement = "illuminance";
- topic = "bigclown/node/+/lux-meter/0:0/illuminance";
- fields.value = "$.payload";
- tags = {
- id = "$.topic[2]";
- };
- }
- {
- measurement = "pressure";
- topic = "bigclown/node/+/barometer/0:0/pressure";
- fields.value = "$.payload";
- tags = {
- id = "$.topic[2]";
- };
- }
- {
- measurement = "voltage";
- topic = "bigclown/node/+/battery/+/voltage";
- fields.value = "$.payload";
- tags = {
- id = "$.topic[2]";
- };
- }
- {
- measurement = "button";
- topic = "bigclown/node/+/push-button/+/event-count";
- fields.value = "$.payload";
- tags = {
- id = "$.topic[2]";
- channel = "$.topic[4]";
- };
- }
- ];
- };
- };
-
- systemd.services.bigclown-leds = {
- description = "Bigclown LEDs control";
- wantedBy = ["multi-user.target"];
- wants = ["mosquitto.service"];
- serviceConfig.ExecStart = "${pkgs.bigclown-leds}/bin/bigclown-leds /run/secrets/bigclown-leds.ini";
- };
-
- services.home-assistant = {
- enable = false;
- openFirewall = true;
- configDir = "/var/lib/hass";
- config = {
- homeassistant = {
- name = "SPT";
- latitude = "!secret latitude";
- longitude = "!secret longitude";
- elevation = "!secret elevation";
- time_zone = "Europe/Prague";
- country = "CZ";
- };
- http.server_port = 8808;
- mqtt = {
- broker = config.cynerd.hosts.spt.mox;
- port = 1883;
- username = "homeassistant";
- password = "!secret mqtt_password";
- sensor = import ./hass/sensors.nix;
- light = import ./hass/light.nix;
- };
- met = {};
- default_config = {};
- };
- extraComponents = [];
- package = pkgs.home-assistant.override {
- packageOverrides = (self: super: {
- scapy = super.scapy.override {
- withPlottingSupport = false;
- };
- s3transfer = super.s3transfer.overridePythonAttrs (oldAttrs: {
- dontUsePytestCheck = true;
- dontUseSetuptoolsCheck = true;
- });
- });
- };
- };
-
};
}
diff --git a/nixos/modules/default.nix b/nixos/modules/default.nix
index 8bf6a31..72221d8 100644
--- a/nixos/modules/default.nix
+++ b/nixos/modules/default.nix
@@ -1,10 +1,11 @@
-nixpkgs: {
+{
cynerd-autounlock = import ./autounlock.nix;
cynerd-compile = import ./compile.nix;
cynerd-desktop = import ./desktop.nix;
- cynerd-develop = import ./develop.nix nixpkgs;
+ cynerd-develop = import ./develop.nix;
cynerd-gaming = import ./gaming.nix;
cynerd-generic = import ./generic.nix;
+ cynerd-home-assistant = import ./home-assistant.nix;
cynerd-hosts = import ./hosts.nix;
cynerd-monitoring = import ./monitoring.nix;
cynerd-openvpn = import ./openvpn.nix;
diff --git a/nixos/modules/develop.nix b/nixos/modules/develop.nix
index fa91d02..b978d3f 100644
--- a/nixos/modules/develop.nix
+++ b/nixos/modules/develop.nix
@@ -1,4 +1,4 @@
-nixpkgs: { config, lib, pkgs, ... }:
+{ config, lib, pkgs, ... }:
with lib;
diff --git a/nixos/modules/gaming.nix b/nixos/modules/gaming.nix
index e71397e..f61f85e 100644
--- a/nixos/modules/gaming.nix
+++ b/nixos/modules/gaming.nix
@@ -19,6 +19,7 @@ in {
cynerd.desktop.enable = true;
environment.systemPackages = with pkgs; [
+ dwarf-fortress
];
programs.steam = {
diff --git a/nixos/modules/home-assistant.nix b/nixos/modules/home-assistant.nix
new file mode 100644
index 0000000..80c76b3
--- /dev/null
+++ b/nixos/modules/home-assistant.nix
@@ -0,0 +1,175 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+
+ cnf = config.cynerd.home-assistant;
+
+in {
+ options = {
+ cynerd.home-assistant = mkEnableOption "Enable Home Assistant and Bigclown";
+ };
+
+ config = mkIf cnf {
+
+ services.mosquitto = {
+ enable = true;
+ listeners = [
+ {
+ users = {
+ cynerd = {
+ acl = ["readwrite #"];
+ passwordFile = "/run/secrets/mosquitto.cynerd.pass";
+ };
+ bigclown = {
+ acl = ["readwrite bigclown/#"];
+ passwordFile = "/run/secrets/mosquitto.bigclown.pass";
+ };
+ homeassistant = {
+ acl = [
+ "readwrite bigclown/#"
+ "readwrite homeassistant/#"
+ ];
+ passwordFile = "/run/secrets/mosquitto.homeassistant.pass";
+ };
+ };
+ }
+ ];
+ };
+ networking.firewall.allowedTCPPorts = [1883];
+
+ services.bigclown = {
+ gateway = {
+ enable = true;
+ device = "/dev/ttyUSB0";
+ environmentFile = "/run/secrets/bigclown.env";
+ baseTopicPrefix = "bigclown/";
+ mqtt = {
+ username = "bigclown";
+ password = "@PASS_MQTT@";
+ };
+ };
+ mqtt2influxdb = {
+ enable = true;
+ environmentFile = "/run/secrets/bigclown.env";
+ mqtt = {
+ username = "bigclown";
+ password = "@PASS_MQTT@";
+ };
+ influxdb = {
+ host = "cynerd.cz";
+ database = "bigclown";
+ username = "bigclown";
+ password = "@PASS_INFLUXDB@";
+ ssl = true;
+ verify_ssl = false;
+ };
+ points = [
+ {
+ measurement = "temperature";
+ topic = "bigclown/node/+/thermometer/+/temperature";
+ fields.value = "$.payload";
+ tags = {
+ id = "$.topic[2]";
+ channel = "$.topic[4]";
+ };
+ }
+ {
+ measurement = "relative-humidity";
+ topic = "bigclown/node/+/hygrometer/+/relative-humidity";
+ fields.value = "$.payload";
+ tags = {
+ id = "$.topic[2]";
+ channel = "$.topic[4]";
+ };
+ }
+ {
+ measurement = "illuminance";
+ topic = "bigclown/node/+/lux-meter/0:0/illuminance";
+ fields.value = "$.payload";
+ tags = {
+ id = "$.topic[2]";
+ };
+ }
+ {
+ measurement = "pressure";
+ topic = "bigclown/node/+/barometer/0:0/pressure";
+ fields.value = "$.payload";
+ tags = {
+ id = "$.topic[2]";
+ };
+ }
+ {
+ measurement = "voltage";
+ topic = "bigclown/node/+/battery/+/voltage";
+ fields.value = "$.payload";
+ tags = {
+ id = "$.topic[2]";
+ };
+ }
+ {
+ measurement = "button";
+ topic = "bigclown/node/+/push-button/+/event-count";
+ fields.value = "$.payload";
+ tags = {
+ id = "$.topic[2]";
+ channel = "$.topic[4]";
+ };
+ }
+ ];
+ };
+ };
+
+ systemd.services.bigclown-leds = {
+ description = "Bigclown LEDs control";
+ wantedBy = ["multi-user.target"];
+ wants = ["mosquitto.service"];
+ serviceConfig.ExecStart = "${pkgs.bigclown-leds}/bin/bigclown-leds /run/secrets/bigclown-leds.ini";
+ };
+
+ services.home-assistant = {
+ enable = false;
+ openFirewall = true;
+ configDir = "/var/lib/hass";
+ config = {
+ homeassistant = {
+ name = "SPT";
+ latitude = "!secret latitude";
+ longitude = "!secret longitude";
+ elevation = "!secret elevation";
+ time_zone = "Europe/Prague";
+ country = "CZ";
+ };
+ http.server_port = 8808;
+ mqtt = {
+ broker = "localhost";
+ port = 1883;
+ username = "homeassistant";
+ password = "!secret mqtt_password";
+ sensor = import ./home-assistant/sensors.nix;
+ light = import ./home-assistant/light.nix;
+ };
+ met = {};
+ default_config = {};
+ };
+ extraComponents = [];
+ package = pkgs.home-assistant.override {
+ extraPackages = pkgs: with pkgs; [
+ securetar
+ ];
+ packageOverrides = (self: super: {
+ scapy = super.scapy.override {
+ withPlottingSupport = false;
+ };
+ s3transfer = super.s3transfer.overridePythonAttrs (oldAttrs: {
+ dontUsePytestCheck = true;
+ dontUseSetuptoolsCheck = true;
+ });
+ });
+ };
+ };
+
+ };
+
+}
diff --git a/nixos/machine/hass/light.nix b/nixos/modules/home-assistant/light.nix
index a9d158b..a9d158b 100644
--- a/nixos/machine/hass/light.nix
+++ b/nixos/modules/home-assistant/light.nix
diff --git a/nixos/machine/hass/sensors.nix b/nixos/modules/home-assistant/sensors.nix
index fadd4eb..fadd4eb 100644
--- a/nixos/machine/hass/sensors.nix
+++ b/nixos/modules/home-assistant/sensors.nix
diff --git a/nixos/modules/monitoring.nix b/nixos/modules/monitoring.nix
index 247253e..1f011dd 100644
--- a/nixos/modules/monitoring.nix
+++ b/nixos/modules/monitoring.nix
@@ -29,7 +29,7 @@ in {
};
config = mkMerge [
- { cynerd.monitoring.host = "ridcully"; }
+ { cynerd.monitoring.host = "errol"; }
(mkIf cnf.enable {
# Telegraf configuration
services.telegraf = {
@@ -38,7 +38,7 @@ in {
extraConfig = {
agent = {};
outputs.influxdb_v2 = {
- urls = ["http://${cnf.host}:8086"];
+ urls = ["http://errol:8086"];
token = "$INFLUX_TOKEN";
organization = "personal";
bucket = "monitoring";