screen-locker: Make xautolock optional, reorganize options (#2343)
* screen-locker: Make xautolock optional, reorganize options xautolock isn't really needed to trigger xss-lock on the basis of time since the built-in screensaver functionality of X serves as one of the event sources for xss-lock. Keeping it around and defaulting to "enabled" to avoid unexpected breakage. Also shuffled around the options to submodules for xss-lock and xautolock to get rid of prefixes in option names and to make enableDetectSleep a bit clearer. * screen-locker: update maintainership * tests/screen-locker: Stub i3lock and xss-lock * screen-locker: add package options for xss-lock and xautolockmain
parent
88f9b33384
commit
e4df31dcea
@ -0,0 +1,30 @@ |
||||
{ config, pkgs, ... }: |
||||
|
||||
{ |
||||
config = { |
||||
services.screen-locker = { |
||||
enable = true; |
||||
inactiveInterval = 5; |
||||
lockCmd = "${pkgs.i3lock}/bin/i3lock -n -c AA0000"; |
||||
xss-lock = { extraOptions = [ "-test" ]; }; |
||||
xautolock = { |
||||
enable = true; |
||||
detectSleep = true; |
||||
extraOptions = [ "-test" ]; |
||||
}; |
||||
}; |
||||
|
||||
test.stubs.i3lock = { }; |
||||
test.stubs.xss-lock = { }; |
||||
|
||||
nmt.script = '' |
||||
xssService=home-files/.config/systemd/user/xss-lock.service |
||||
xautolockService=home-files/.config/systemd/user/xautolock-session.service |
||||
|
||||
assertFileExists $xssService |
||||
assertFileRegex $xssService 'ExecStart=.*/bin/xss-lock.*-test.*i3lock -n -c AA0000' |
||||
assertFileExists $xautolockService |
||||
assertFileRegex $xautolockService 'ExecStart=.*/bin/xautolock.*-time 5.*-detectsleep.*-test.*' |
||||
''; |
||||
}; |
||||
} |
@ -0,0 +1,5 @@ |
||||
{ |
||||
screen-locker-basic-configuration = ./basic-configuration.nix; |
||||
screen-locker-no-xautolock = ./no-xautolock.nix; |
||||
screen-locker-moved-options = ./moved-options.nix; |
||||
} |
@ -0,0 +1,36 @@ |
||||
{ config, pkgs, options, lib, ... }: |
||||
|
||||
{ |
||||
config = { |
||||
services.screen-locker = { |
||||
enable = true; |
||||
inactiveInterval = 5; |
||||
lockCmd = "${pkgs.i3lock}/bin/i3lock -n -c AA0000"; |
||||
xssLockExtraOptions = [ "-test" ]; |
||||
xautolockExtraOptions = [ "-test" ]; |
||||
enableDetectSleep = true; |
||||
}; |
||||
|
||||
test.stubs.i3lock = { }; |
||||
test.stubs.xss-lock = { }; |
||||
|
||||
# Use the same verification script as the basic configuration. The result |
||||
# with the old options should be identical. |
||||
nmt.script = (import ./basic-configuration.nix { |
||||
inherit config pkgs; |
||||
}).config.nmt.script; |
||||
|
||||
test.asserts.warnings.expected = with lib; |
||||
let |
||||
renamed = { |
||||
xssLockExtraOptions = "xss-lock.extraOptions"; |
||||
xautolockExtraOptions = "xautolock.extraOptions"; |
||||
enableDetectSleep = "xautolock.detectSleep"; |
||||
}; |
||||
in mapAttrsToList (old: new: |
||||
builtins.replaceStrings [ "\n" ] [ " " ] '' |
||||
The option `services.screen-locker.${old}' defined in |
||||
${showFiles options.services.screen-locker.${old}.files} |
||||
has been renamed to `services.screen-locker.${new}'.'') renamed; |
||||
}; |
||||
} |
@ -0,0 +1,24 @@ |
||||
{ config, pkgs, ... }: |
||||
|
||||
{ |
||||
config = { |
||||
services.screen-locker = { |
||||
enable = true; |
||||
inactiveInterval = 5; |
||||
lockCmd = "${pkgs.i3lock}/bin/i3lock -n -c AA0000"; |
||||
xss-lock = { extraOptions = [ "-test" ]; }; |
||||
xautolock = { enable = false; }; |
||||
}; |
||||
|
||||
test.stubs.i3lock = { }; |
||||
test.stubs.xss-lock = { }; |
||||
|
||||
nmt.script = '' |
||||
xssService=home-files/.config/systemd/user/xss-lock.service |
||||
|
||||
assertFileExists $xssService |
||||
assertFileRegex $xssService 'ExecStart=.*/bin/xss-lock.*-test.*i3lock -n -c AA0000' |
||||
assertFileRegex $xssService 'ExecStartPre=.*/xset s 300' |
||||
''; |
||||
}; |
||||
} |
Loading…
Reference in new issue