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 xautolock
This commit is contained in:
Josh Robson Chase 2021-10-05 12:58:25 -04:00 committed by GitHub
parent 88f9b33384
commit e4df31dcea
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 221 additions and 55 deletions

View file

@ -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.*'
'';
};
}

View file

@ -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;
}

View file

@ -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;
};
}

View file

@ -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'
'';
};
}