summaryrefslogtreecommitdiffstats
path: root/nixos
diff options
context:
space:
mode:
authorMaximilian Bosch <maximilian@mbosch.me>2019-05-12 11:07:54 +0200
committerGitHub <noreply@github.com>2019-05-12 11:07:54 +0200
commitfa2c6dc3c2317f76e4253dab0b460a3cc0c30cad (patch)
tree617caf215351ada75ed2e8606815329700e160dd /nixos
parent74c841f4ad51578cc515e1c427b40ed6c7a29f4c (diff)
parentd27431b362d8ad3d745989299d52640e4ce9863e (diff)
Merge pull request #61311 from turboMaCk/xss-lock-locker-options
xss-lock: improve locker options passing
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/programs/xss-lock.nix19
-rw-r--r--nixos/tests/xss-lock.nix36
2 files changed, 44 insertions, 11 deletions
diff --git a/nixos/modules/programs/xss-lock.nix b/nixos/modules/programs/xss-lock.nix
index c290df01b960..070463311db5 100644
--- a/nixos/modules/programs/xss-lock.nix
+++ b/nixos/modules/programs/xss-lock.nix
@@ -8,12 +8,23 @@ in
{
options.programs.xss-lock = {
enable = mkEnableOption "xss-lock";
+
lockerCommand = mkOption {
default = "${pkgs.i3lock}/bin/i3lock";
example = literalExample ''''${pkgs.i3lock-fancy}/bin/i3lock-fancy'';
type = types.string;
description = "Locker to be used with xsslock";
};
+
+ extraOptions = mkOption {
+ default = [ ];
+ example = [ "--ignore-sleep" ];
+ type = types.listOf types.str;
+ description = ''
+ Additional command-line arguments to pass to
+ <command>xss-lock</command>.
+ '';
+ };
};
config = mkIf cfg.enable {
@@ -21,7 +32,13 @@ in
description = "XSS Lock Daemon";
wantedBy = [ "graphical-session.target" ];
partOf = [ "graphical-session.target" ];
- serviceConfig.ExecStart = "${pkgs.xss-lock}/bin/xss-lock ${cfg.lockerCommand}";
+ serviceConfig.ExecStart = with lib;
+ strings.concatStringsSep " " ([
+ "${pkgs.xss-lock}/bin/xss-lock"
+ ] ++ (map escapeShellArg cfg.extraOptions) ++ [
+ "--"
+ cfg.lockerCommand
+ ]);
};
};
}
diff --git a/nixos/tests/xss-lock.nix b/nixos/tests/xss-lock.nix
index b46bb1a8f6e9..0d757e8cef3f 100644
--- a/nixos/tests/xss-lock.nix
+++ b/nixos/tests/xss-lock.nix
@@ -6,19 +6,35 @@ with lib;
name = "xss-lock";
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ma27 ];
- machine = {
- imports = [ ./common/x11.nix ./common/user-account.nix ];
- programs.xss-lock.enable = true;
- services.xserver.displayManager.auto.user = "alice";
+ nodes = {
+ simple = {
+ imports = [ ./common/x11.nix ./common/user-account.nix ];
+ programs.xss-lock.enable = true;
+ services.xserver.displayManager.auto.user = "alice";
+ };
+
+ custom_lockcmd = { pkgs, ... }: {
+ imports = [ ./common/x11.nix ./common/user-account.nix ];
+ services.xserver.displayManager.auto.user = "alice";
+
+ programs.xss-lock = {
+ enable = true;
+ extraOptions = [ "-n" "${pkgs.libnotify}/bin/notify-send 'About to sleep!'"];
+ lockerCommand = "${pkgs.xlockmore}/bin/xlock -mode ant";
+ };
+ };
};
testScript = ''
- $machine->start;
- $machine->waitForX;
- $machine->waitForUnit("xss-lock.service", "alice");
+ startAll;
- $machine->fail("pgrep xlock");
- $machine->succeed("su -l alice -c 'xset dpms force standby'");
- $machine->waitUntilSucceeds("pgrep i3lock");
+ ${concatStringsSep "\n" (mapAttrsToList (name: lockCmd: ''
+ ${"$"+name}->start;
+ ${"$"+name}->waitForX;
+ ${"$"+name}->waitForUnit("xss-lock.service", "alice");
+ ${"$"+name}->fail("pgrep ${lockCmd}");
+ ${"$"+name}->succeed("su -l alice -c 'xset dpms force standby'");
+ ${"$"+name}->waitUntilSucceeds("pgrep ${lockCmd}");
+ '') { simple = "i3lock"; custom_lockcmd = "xlock"; })}
'';
})