Schedule user units based on power supply status
This commit is contained in:
parent
2039d2d3d5
commit
d6617236ba
30
module.nix
30
module.nix
|
@ -19,6 +19,36 @@ in {
|
||||||
programs.dconf.enable = lib.mkIf graphical true;
|
programs.dconf.enable = lib.mkIf graphical true;
|
||||||
programs.fish.enable = 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} = {
|
users.users.${user} = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
shell = config.programs.fish.package;
|
shell = config.programs.fish.package;
|
||||||
|
|
|
@ -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 = {
|
systemd.user.targets.tray = {
|
||||||
Unit = {
|
Unit = {
|
||||||
BindsTo = "waybar.service";
|
BindsTo = "waybar.service";
|
||||||
|
|
Reference in a new issue