feat(etna): add ups

This commit is contained in:
uku 2024-12-17 00:15:28 +01:00
parent d84169a8ce
commit efec23d7c6
Signed by: uku
SSH key fingerprint: SHA256:4P0aN6M8ajKukNi6aPOaX0LacanGYtlfjmN+m/sHY/o
4 changed files with 85 additions and 0 deletions

View file

@ -0,0 +1,13 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBiaFE3Nm5oOVFHTXhPU2lL
TUFFMW1DeE5nVVlzYmZTQVhvY3VYMDM4TUNNCnpkZVRzRHB5aFpZalVXU3g0OXRU
d3hCQ0I3d2JwaTZkUUZWbmlsR1Q5cGcKLT4gWDI1NTE5IElzZCtzdHRtb2xiTlg5
WjVEb2NvVXovaTlmcm5RU1hac3dkYnBMekZsQnMKKzBPcnRnSzl4RzVnT2RPZW9k
WXdiQkxjamRsaFBiYzMyUlM1Z0lLL2hTVQotPiBYMjU1MTkgcEVLcFFqTHNjZzAw
VDI4Nk1XWnE1dFJqZE5MOEhwb0VQV0hpbGErZWdSRQpJTWlTdzVaYnk4d0xuNkc0
YXlHOUFJbFQ2Ty9YZUFzVlozWHI2WFpJaXBvCi0+IFgyNTUxOSA1THM4L1NoNjJj
QkhMeGdRcGhmdG82dWZSUEtYSXJEblZFeDZMMWpkdUc0Cjc0TjR5RXQyMkdCdGZq
SmRhUnd1WXZ6MGNBeUNTY2JtbHVTbjZwYm91UTgKLS0tIGR6MXU0NSsxdWptK2tj
ZENTU0JlSlZGTDRIN29WSDFTaCtOSDJBUEpyRDAKqviriYjN2oOLIh6Rk5YTpCoC
zlEp6FM9q4csg3niPkgovpIyYBTa/QkG
-----END AGE ENCRYPTED FILE-----

View file

@ -31,4 +31,5 @@ in {
"etna/forgejoRunnerSecret.age".publicKeys = main ++ [etna];
"etna/vaultwardenEnv.age".publicKeys = main ++ [etna];
"etna/vmauthEnv.age".publicKeys = main ++ [etna];
"etna/upsdUserPass.age".publicKeys = main ++ [etna];
}

View file

@ -30,6 +30,7 @@ in {
./satisfactory.nix
./shlink.nix
./uku.nix
./ups.nix
./vaultwarden.nix
];

70
systems/etna/ups.nix Normal file
View file

@ -0,0 +1,70 @@
{
_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";
}
];
}
];
};
}