nixos/modules/power-management.nix

33 lines
839 B
Nix

{
pkgs,
lib,
config,
...
}: let
cfg = config.services.power;
in {
options.services.power = {
target.enable = lib.mkEnableOption "power management through some controller";
};
config = lib.mkIf cfg.target.enable {
users.users.power-target = {
isNormalUser = true;
openssh.authorizedKeys.keyFiles = [../secrets/pub/yubikey.pub ../secrets/pub/power-management-key.pub];
group = "power-target";
packages = [ pkgs.pmutils ];
};
users.groups.power-target = {};
security.sudo.extraRules = lib.mkAfter [
{
users = [ config.users.users.power-target.name ];
commands = lib.singleton {
command = "/etc/profiles/per-user/${config.users.users.power-target.name}/bin/pm-suspend";
options = lib.singleton "NOPASSWD";
};
}
];
};
}