Root cause chain of recurring Matrix outages (2026-08-16):
1. DNS on m3-hermes resolves exclusively via the Netbird-managed
resolver. When the Netbird nameserver group is unreachable
(observed 14:03-15:24), matrix.m3ta.dev fails to resolve.
2. A gateway restart during that window fails the Matrix login, and
without MATRIX_ACCESS_TOKEN the gateway drops Matrix permanently
from its reconnect queue ('no bot credential on queued config').
Recovery happens only on the next restart - with working DNS.
3. The stable-token setup from 2026-08-14 was wiped because it was
only written to the regenerated .env, not to the agenix secret.
Changes:
- Pin matrix.m3ta.dev to the m3-atlas public IP (TLS termination)
so the Matrix connection survives Netbird DNS outages.
- Declare MATRIX_DEVICE_ID=HERMES01 in the module environment so the
device id survives .env regeneration. The matching
MATRIX_ACCESS_TOKEN must be added to secrets/hermes-env.age
(separate manual step: agenix edit + re-encrypt).
Add pkgs.uv to systemd.services.hermes-agent.path so that CronJobs
and terminal sessions can execute PEP 723 scripts via 'uv run'
(e.g. garmin-daily.py for Garmin Connect health data).
Also adds uv to environment.systemPackages for general availability.
- Fix hardcoded user path in webapps.nix (use homeDirectory)
- Normalize wallpapers option to use .enable suffix
- Remove duplicate FZF keybind declaration
- Update comments to match actual implementation