61 lines
2.1 KiB
Nix
61 lines
2.1 KiB
Nix
{ config, lib, namespace, ... }:
|
|
with lib;
|
|
let
|
|
cfg = config.${namespace}.services.home-assistant;
|
|
in
|
|
{
|
|
config = mkIf cfg.enable {
|
|
services = {
|
|
# Enable and configure Mosquitto MQTT broker
|
|
mosquitto = {
|
|
enable = true;
|
|
listeners = [
|
|
{
|
|
acl = [ "pattern readwrite #" ];
|
|
omitPasswordAuth = true;
|
|
settings.allow_anonymous = true;
|
|
}
|
|
];
|
|
};
|
|
|
|
zigbee2mqtt = {
|
|
enable = true;
|
|
settings = {
|
|
homeassistant = {
|
|
enabled = config.services.home-assistant.enable;
|
|
# Optional: Home Assistant discovery topic (default: shown below)
|
|
# Note: should be different from [MQTT base topic](../mqtt.md) to prevent errors in HA software
|
|
discovery_topic = "homeassistant";
|
|
# Optional: Home Assistant status topic (default: shown below)
|
|
status_topic = "homeassistant/status";
|
|
# Optional: Experimental support for Home Assistant event entities, may break in the future (default: shown below) when enabled:
|
|
# - An `event` entity will be discovered for each 'action'.
|
|
# - The `event_type` attribute will contain the action itself, additional attributes like `button` will have further information.
|
|
experimental_event_entities = false;
|
|
# Optional: Home Assistant legacy action sensor (default: `false`), when enabled:
|
|
# - Zigbee2MQTT will send an empty 'action' after one has been send
|
|
# - A 'sensor_action' will be discovered
|
|
legacy_action_sensor = false;
|
|
};
|
|
|
|
permit_join = true;
|
|
# Web interface
|
|
frontend = {
|
|
port = cfg.zigbee2mqttPort;
|
|
};
|
|
# MQTT configuration
|
|
mqtt = {
|
|
base_topic = "zigbee2mqtt";
|
|
server = "mqtt://localhost:${toString cfg.mosquittoPort}";
|
|
# If using authentication:
|
|
# user = "mqttuser";
|
|
# password = "your-password";
|
|
};
|
|
serial = {
|
|
port = cfg.zigbeeDevicePath;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
} |