From efec23d7c63c32f72cda5b85660a61818ff595da Mon Sep 17 00:00:00 2001 From: uku Date: Tue, 17 Dec 2024 00:15:28 +0100 Subject: [PATCH] feat(etna): add ups --- secrets/etna/upsdUserPass.age | 13 +++++++ secrets/secrets.nix | 1 + systems/etna/default.nix | 1 + systems/etna/ups.nix | 70 +++++++++++++++++++++++++++++++++++ 4 files changed, 85 insertions(+) create mode 100644 secrets/etna/upsdUserPass.age create mode 100644 systems/etna/ups.nix diff --git a/secrets/etna/upsdUserPass.age b/secrets/etna/upsdUserPass.age new file mode 100644 index 0000000..b33f108 --- /dev/null +++ b/secrets/etna/upsdUserPass.age @@ -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----- diff --git a/secrets/secrets.nix b/secrets/secrets.nix index ab7b04f..18a3419 100644 --- a/secrets/secrets.nix +++ b/secrets/secrets.nix @@ -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]; } diff --git a/systems/etna/default.nix b/systems/etna/default.nix index 7420247..27b7e76 100644 --- a/systems/etna/default.nix +++ b/systems/etna/default.nix @@ -30,6 +30,7 @@ in { ./satisfactory.nix ./shlink.nix ./uku.nix + ./ups.nix ./vaultwarden.nix ]; diff --git a/systems/etna/ups.nix b/systems/etna/ups.nix new file mode 100644 index 0000000..01b9638 --- /dev/null +++ b/systems/etna/ups.nix @@ -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"; + } + ]; + } + ]; + }; +}