94 lines
2.1 KiB
Nix
94 lines
2.1 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
self,
|
|
...
|
|
}:
|
|
|
|
let
|
|
cfg = config.modules.services.home-assistant;
|
|
in
|
|
{
|
|
config = lib.mkIf cfg.enable {
|
|
services.mosquitto = {
|
|
enable = true;
|
|
listeners = [
|
|
{
|
|
acl = [ "pattern readwrite #" ];
|
|
omitPasswordAuth = true;
|
|
port = 1883;
|
|
settings = {
|
|
allow_anonymous = true;
|
|
};
|
|
}
|
|
];
|
|
};
|
|
|
|
age.secrets."files/services/zigbee2mqtt/secret.yaml" = {
|
|
file = "${self.inputs.secrets}/files/services/zigbee2mqtt/secret.yaml.age";
|
|
path = "${config.services.zigbee2mqtt.dataDir}/secret.yaml";
|
|
owner = "zigbee2mqtt";
|
|
group = "zigbee2mqtt";
|
|
};
|
|
|
|
services.zigbee2mqtt = {
|
|
package = pkgs.unstable.zigbee2mqtt;
|
|
enable = true;
|
|
dataDir = "/var/lib/zigbee2mqtt";
|
|
settings = {
|
|
homeassistant = lib.optionalAttrs config.services.home-assistant.enable {
|
|
discovery_topic = "homeassistant";
|
|
status_topic = "hass/status";
|
|
legacy_entity_attributes = true;
|
|
legacy_triggers = true;
|
|
};
|
|
availability = true;
|
|
frontend = true;
|
|
device_options = {
|
|
retain = true;
|
|
};
|
|
serial = {
|
|
port = "/dev/serial/by-id/usb-Silicon_Labs_Sonoff_Zigbee_3.0_USB_Dongle_Plus_0001-if00-port0";
|
|
};
|
|
advanced = {
|
|
channel = 20;
|
|
network_key = "!secret.yaml network_key";
|
|
pan_id = 13001;
|
|
ext_pan_id = [
|
|
79
|
|
1
|
|
73
|
|
47
|
|
250
|
|
136
|
|
124
|
|
222
|
|
];
|
|
transmit_power = 20;
|
|
};
|
|
mqtt = {
|
|
version = 5;
|
|
server = "mqtt://localhost:1883";
|
|
};
|
|
};
|
|
};
|
|
|
|
modules.services.borgmatic.directories = [
|
|
config.services.mosquitto.dataDir
|
|
config.services.zigbee2mqtt.dataDir
|
|
];
|
|
|
|
services.home-assistant = {
|
|
config.mqtt = { };
|
|
extraComponents = [
|
|
"mqtt"
|
|
"mqtt_eventstream"
|
|
"mqtt_json"
|
|
"mqtt_room"
|
|
"mqtt_statestream"
|
|
];
|
|
};
|
|
};
|
|
}
|