1{
2 name = "xss-lock";
3 meta.maintainers = [ ];
4
5 nodes = {
6 simple = {
7 imports = [
8 ./common/x11.nix
9 ./common/user-account.nix
10 ];
11 programs.xss-lock.enable = true;
12 test-support.displayManager.auto.user = "alice";
13 };
14
15 custom_lockcmd =
16 { pkgs, ... }:
17 {
18 imports = [
19 ./common/x11.nix
20 ./common/user-account.nix
21 ];
22 test-support.displayManager.auto.user = "alice";
23
24 programs.xss-lock = {
25 enable = true;
26 extraOptions = [
27 "-n"
28 "${pkgs.libnotify}/bin/notify-send 'About to sleep!'"
29 ];
30 lockerCommand = "${pkgs.xlockmore}/bin/xlock -mode ant";
31 };
32 };
33 };
34
35 testScript = ''
36 def perform_xsslock_test(machine, lockCmd):
37 machine.start()
38 machine.wait_for_x()
39 machine.wait_for_unit("xss-lock.service", "alice")
40 machine.fail(f"pgrep {lockCmd}")
41 machine.succeed("su -l alice -c 'xset dpms force standby'")
42 machine.wait_until_succeeds(f"pgrep {lockCmd}")
43
44
45 with subtest("simple"):
46 perform_xsslock_test(simple, "i3lock")
47
48 with subtest("custom_cmd"):
49 perform_xsslock_test(custom_lockcmd, "xlock")
50 '';
51}