{ config, lib, ... }: let cfg = config.os.srv.ups; in { options.os.srv.ups.enable = lib.mkEnableOption "enables smooth shutdown on power loss"; config = lib.mkIf cfg.enable { power.ups = { enable = true; mode = "standalone"; ups.main = { driver = "usbhid-ups"; port = "auto"; description = "Main Server UPS"; }; users.upsmon = { # TODO make password passwordFile = "sops"; upsmon = "master"; }; upsmon.monitor.main = { system = "main@localhost"; user = "upsmon"; # TODO password passwordFile = "sops"; type = "master"; }; settings = { MINSUPPLIES = 1; POWERDOWNFLAG = "/run/killpower"; }; }; }; }