mirror of
https://github.com/genebean/dots.git
synced 2026-03-27 17:37:43 -04:00
- Add deadnix, nixfmt, and statix to flake inputs - Add formatter output to flake for nix fmt support - Add deadnix, nixfmt, statix to Home Manager packages - Format all nix files with nixfmt - Add GitHub Actions workflow for CI validation - Support x86_64-darwin in formatter
135 lines
3.5 KiB
Nix
135 lines
3.5 KiB
Nix
{ config, ... }:
|
|
let
|
|
mqtt_domain = "mqtt.technicalissues.us";
|
|
in
|
|
{
|
|
security.acme.certs.${mqtt_domain}.postRun =
|
|
"systemctl restart ${config.systemd.services.mosquitto.name}";
|
|
|
|
services.mosquitto = {
|
|
enable = true;
|
|
bridges = {
|
|
liamcottle = {
|
|
addresses = [
|
|
{
|
|
address = "mqtt.meshtastic.liamcottle.net";
|
|
port = 1883;
|
|
}
|
|
];
|
|
topics = [
|
|
"msh/# out 1 \"\""
|
|
];
|
|
settings = {
|
|
remote_username = "uplink";
|
|
remote_password = "uplink";
|
|
cleansession = true;
|
|
keepalive_interval = 160;
|
|
notifications = false;
|
|
start_type = "automatic";
|
|
};
|
|
};
|
|
meshtastic = {
|
|
addresses = [
|
|
{
|
|
address = "mqtt.meshtastic.org";
|
|
port = 1883;
|
|
}
|
|
];
|
|
topics = [
|
|
"msh/# out 1 \"\""
|
|
];
|
|
settings = {
|
|
remote_username = "meshdev";
|
|
remote_password = "large4cats";
|
|
#bridge_protocol_version = "mqttv311";
|
|
cleansession = true;
|
|
keepalive_interval = 160;
|
|
notifications = false;
|
|
start_type = "automatic";
|
|
};
|
|
};
|
|
homeassistant = {
|
|
addresses = [
|
|
{
|
|
address = "homeasistant-lc.atlas-snares.ts.net";
|
|
port = 1883;
|
|
}
|
|
];
|
|
topics = [
|
|
"msh/US/2/e/LongFast/!a386c80 out 1 \"\""
|
|
"msh/US/2/e/LongFast/!b03bcb24 out 1 \"\""
|
|
"msh/US/2/e/LongFast/!b03dbe58 out 1 \"\""
|
|
"msh/US/2/e/LongFast/!4370b0c6 out 1 \"\""
|
|
];
|
|
settings = {
|
|
remote_username = "meshtastic_user";
|
|
remote_password = "meshtastic_user";
|
|
cleansession = true;
|
|
keepalive_interval = 160;
|
|
notifications = false;
|
|
start_type = "automatic";
|
|
};
|
|
};
|
|
};
|
|
listeners =
|
|
let
|
|
mqtt_users = {
|
|
genebean = {
|
|
acl = [
|
|
"readwrite msh/#"
|
|
];
|
|
hashedPasswordFile = config.sops.secrets.mosquitto_genebean.path;
|
|
};
|
|
mountain_mesh = {
|
|
acl = [
|
|
"readwrite msh/#"
|
|
];
|
|
hashedPasswordFile = config.sops.secrets.mosquitto_mountain_mesh.path;
|
|
};
|
|
};
|
|
in
|
|
[
|
|
{
|
|
port = 1883;
|
|
users = mqtt_users;
|
|
settings.allow_anonymous = false;
|
|
}
|
|
{
|
|
port = 8883;
|
|
users = mqtt_users;
|
|
settings =
|
|
let
|
|
certDir = config.security.acme.certs."${mqtt_domain}".directory;
|
|
in
|
|
{
|
|
allow_anonymous = false;
|
|
keyfile = certDir + "/key.pem";
|
|
certfile = certDir + "/cert.pem";
|
|
cafile = certDir + "/chain.pem";
|
|
};
|
|
}
|
|
{
|
|
port = 9001;
|
|
users = mqtt_users;
|
|
settings =
|
|
let
|
|
certDir = config.security.acme.certs."${mqtt_domain}".directory;
|
|
in
|
|
{
|
|
allow_anonymous = false;
|
|
keyfile = certDir + "/key.pem";
|
|
certfile = certDir + "/cert.pem";
|
|
cafile = certDir + "/chain.pem";
|
|
protocol = "websockets";
|
|
};
|
|
}
|
|
];
|
|
};
|
|
|
|
sops.secrets = {
|
|
mosquitto_genebean.owner = config.users.users.mosquitto.name;
|
|
mosquitto_mountain_mesh.owner = config.users.users.mosquitto.name;
|
|
};
|
|
|
|
users.users.mosquitto.extraGroups = [ "nginx" ];
|
|
}
|