1
0
Fork 0
mirror of https://github.com/nix-community/home-manager synced 2024-11-01 08:49:44 +01:00
home-manager/tests/modules/services/swayidle/basic-configuration.nix
9p4 04bac349d5
swayidle: always restart systemd unit on failure
Occasionally, swayidle crashes with a failure to connect to the
Wayland session. Ideally, swayidle should automatically restart
instead of leaving the system in a vulnerable state.

(cherry picked from commit 50e582b9f9)
2023-11-12 01:14:41 +01:00

54 lines
1.4 KiB
Nix

{ config, pkgs, lib, ... }:
{
services.swayidle = {
enable = true;
package = config.lib.test.mkStubPackage { };
timeouts = [
{
timeout = 50;
command = ''notify-send -t 10000 -- "Screen lock in 10 seconds"'';
}
{
timeout = 60;
command = "swaylock -fF";
}
{
timeout = 300;
command = ''swaymsg "output * dpms off"'';
resumeCommand = ''swaymsg "output * dpms on"'';
}
];
events = [
{
event = "before-sleep";
command = "swaylock -fF";
}
{
event = "lock";
command = "swaylock -fF";
}
];
};
nmt.script = let
escapeForRegex = builtins.replaceStrings [ "'" "*" ] [ "'\\''" "\\*" ];
expectedArgs = escapeForRegex (lib.concatStringsSep " " [
"-w"
"timeout 50 'notify-send -t 10000 -- \"Screen lock in 10 seconds\"'"
"timeout 60 'swaylock -fF'"
"timeout 300 'swaymsg \"output * dpms off\"' resume 'swaymsg \"output * dpms on\"'"
"before-sleep 'swaylock -fF'"
"lock 'swaylock -fF'"
]);
in ''
serviceFile=home-files/.config/systemd/user/swayidle.service
assertFileExists $serviceFile
assertFileRegex $serviceFile 'ExecStart=.*/bin/swayidle ${expectedArgs}'
assertFileRegex $serviceFile 'Restart=always'
assertFileRegex $serviceFile 'Environment=.*PATH=${
lib.makeBinPath [ pkgs.bash ]
}'
'';
}