Files
nix-config/modules/nixos/hardware/battery/default.nix
2025-11-20 14:58:21 -06:00

43 lines
1.0 KiB
Nix

# echo 81 | sudo tee /sys/class/power_supply/macsmc-battery/charge_control_end_threshold
{
config,
pkgs,
lib,
namespace,
...
}:
with lib;
let
inherit (lib.${namespace}) mkOpt;
cfg = config.${namespace}.hardware.battery;
in
{
options.${namespace}.hardware.battery = {
enable = mkEnableOption "battery charge limit service";
chargeLimit = mkOpt types.int 81 "Charge limit for the battery, ex: 81 = 80% charge limit";
battery = mkOpt types.str "" "Path to the battery charge limit file";
};
config = mkIf cfg.enable {
systemd = {
services = {
set-charge-limit = {
enable = true;
wantedBy = [ "multi-user.target" ];
path = [
pkgs.uutils-coreutils-noprefix
];
script = ''
${pkgs.uutils-coreutils-noprefix}/bin/echo ${toString cfg.chargeLimit} | tee ${cfg.battery}
'';
serviceConfig = {
Type = "oneshot";
TimeoutSec = "5s";
};
};
};
};
};
}