{ _utils, config, ... }: let upsdPass = _utils.setupSingleSecret config "upsdUserPass" {}; in { imports = [upsdPass.generate]; power.ups = { enable = true; mode = "standalone"; upsd.listen = [ { address = "127.0.0.1"; port = 3493; } ]; users.admin = { passwordFile = upsdPass.path; instcmds = ["ALL"]; actions = ["SET" "FSD"]; }; ups.eaton-3s-850 = { driver = "usbhid-ups"; port = "auto"; description = "Eaton 3S 850 UPS"; }; upsmon.monitor.eaton-3s-850 = { user = "admin"; passwordFile = upsdPass.path; }; }; services = { prometheus.exporters.nut = { enable = true; user = "root"; nutUser = "admin"; passwordPath = upsdPass.path; nutVariables = [ "battery.charge" "battery.runtime" "battery.voltage" "device.info" "input.voltage" "ups.load" "ups.status" ]; }; vmagent.prometheusConfig.scrape_configs = [ { job_name = "nut"; metrics_path = "/ups_metrics"; params.ups = ["eaton-3s-850"]; static_configs = [ { targets = ["localhost:${builtins.toString config.services.prometheus.exporters.nut.port}"]; labels.ups = "eaton-3s-850"; } ]; } ]; }; }