Systant is a userspace controller, so it makes sense to manage it
via home-manager rather than as a system service. This allows:
- Declarative per-user configuration
- Access to user's environment, PATH, and session
- Proper handling of audio, display, and other user resources
Usage in home-manager config:
imports = [ inputs.systant.homeManagerModules.default ];
services.systant.enable = true;
services.systant.settings = { ... };
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Relative paths in package.nix don't resolve correctly when
the flake is used as an input in another flake. Pass src
explicitly from the flake instead.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- nix/package.nix: two-phase build with fixed-output derivation for deps
- nix/nixos-module.nix: systemd service with systant.enable and systant.configFile
- flake.nix: expose nixosModules.default and overlays.default
Usage in NixOS config:
systant.enable = true;
systant.configFile = ./systant.toml;
When deps change, update hash: nix build .#systant 2>&1 | grep 'got:'
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
A lightweight system monitoring agent that:
- Collects metrics via configurable shell commands
- Publishes to MQTT with Home Assistant auto-discovery
- Supports entity types: sensor, binary_sensor, light, switch, button
- Responds to commands over MQTT for controllable entities
Architecture:
- src/config.ts: TOML config loading and validation
- src/mqtt.ts: MQTT client with HA discovery
- src/entities.ts: Entity state polling and command handling
- index.ts: CLI entry point (run, check, once commands)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>