infra/nix/hosts/t14/modules/desktop/systemd-lock-handler/default.nix
2026-01-05 23:09:19 +01:00

30 lines
1001 B
Nix

{lib, config, pkgs, ...}:
{
systemd.user.services.swaylock = {
Unit = {
Description = "Screen locker for Wayland";
Documentation = ["man:swaylock(1)"];
# If swaylock exits cleanly, unlock the session:
OnSuccess = ["unlock.target"];
# When lock.target is stopped, stops this too:
PartOf = ["lock.target" "sway-session.target"];
# Delay lock.target until this service is ready:
Before = "lock.target";
};
Install = {
WantedBy = ["lock.target"];
};
Service = {
# systemd will consider this service started when swaylock forks...
Type = "forking";
# ... and swaylock will fork only after it has locked the screen.
# ExecStart = "${lib.getExe pkgs.swaylock} -efF -C ~/.config/swaylock/config";
ExecStart = "${pkgs.swaylock}/bin/swaylock -efF -C ~/.config/swaylock/config";
# If swaylock crashes, always restart it immediately:
Restart = "on-failure";
RestartSec = 0;
};
};
}