Schedule user units based on power supply status

This commit is contained in:
Mikael Voss 2024-08-11 18:18:32 +02:00
parent 2039d2d3d5
commit d6617236ba
No known key found for this signature in database
2 changed files with 37 additions and 0 deletions

View file

@ -19,6 +19,36 @@ in {
programs.dconf.enable = lib.mkIf graphical true;
programs.fish.enable = true;
services.udev.packages = [
(pkgs.writeTextDir "/etc/udev/rules.d/98-user-power-supply.rules" ''
SUBSYSTEM=="power_supply", KERNEL=="AC", TAG+="systemd", ENV{SYSTEMD_USER_WANTS}+="power-internal.target power-external.target"
'')
];
systemd.user = {
targets = {
power-internal = {
description = "On internal power supply";
conflicts = [ "power-external.target" ];
wantedBy = [ "default.target" ];
unitConfig = {
ConditionACPower = false;
DefaultDependencies = false;
};
};
power-external = {
description = "On external power supply";
conflicts = [ "power-internal.target" ];
wantedBy = [ "default.target" ];
unitConfig = {
ConditionACPower = true;
DefaultDependencies = false;
};
};
};
};
users.users.${user} = {
isNormalUser = true;
shell = config.programs.fish.package;

View file

@ -436,6 +436,13 @@ in lib.mkIf (osConfig.hardware.graphics.enable or false) {
};
};
systemd.user.services = lib.genAttrs [ "syncthing" ] (service: {
Unit = {
ConditionACPower = true;
StopPropagatedFrom = [ "power-external.target" ];
};
});
systemd.user.targets.tray = {
Unit = {
BindsTo = "waybar.service";