Skip to content

Commit

Permalink
swayidle: minor cleanups
Browse files Browse the repository at this point in the history
  • Loading branch information
rycee committed Sep 20, 2024
1 parent 4803bf5 commit 0b052dd
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 31 deletions.
23 changes: 10 additions & 13 deletions modules/services/swayidle.nix
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,6 @@ let

cfg = config.services.swayidle;

mkTimeout = t:
[ "timeout" (toString t.timeout) (escapeShellArg t.command) ]
++ optionals (t.resumeCommand != null) [
"resume"
(escapeShellArg t.resumeCommand)
];

mkEvent = e: [ e.event (escapeShellArg e.command) ];

args = cfg.extraArgs ++ (concatMap mkTimeout cfg.timeouts)
++ (concatMap mkEvent cfg.events);

in {
meta.maintainers = [ maintainers.c0deaddict ];

Expand Down Expand Up @@ -127,7 +115,16 @@ in {
Restart = "always";
# swayidle executes commands using "sh -c", so the PATH needs to contain a shell.
Environment = [ "PATH=${makeBinPath [ pkgs.bash ]}" ];
ExecStart = "${cfg.package}/bin/swayidle ${concatStringsSep " " args}";
ExecStart = let
mkTimeout = t:
[ "timeout" (toString t.timeout) t.command ]
++ optionals (t.resumeCommand != null) [ "resume" t.resumeCommand ];

mkEvent = e: [ e.event e.command ];

args = cfg.extraArgs ++ (concatMap mkTimeout cfg.timeouts)
++ (concatMap mkEvent cfg.events);
in "${getExe cfg.package} ${escapeShellArgs args}";
};

Install = { WantedBy = [ cfg.systemdTarget ]; };
Expand Down
42 changes: 24 additions & 18 deletions tests/modules/services/swayidle/basic-configuration.nix
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
{
services.swayidle = {
enable = true;
package = config.lib.test.mkStubPackage { };
package = config.lib.test.mkStubPackage { outPath = "@swayidle@"; };
timeouts = [
{
timeout = 50;
Expand Down Expand Up @@ -31,24 +31,30 @@
];
};

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 ''
nmt.script = ''
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 ]
}'
assertFileExists "$serviceFile"
serviceFileNormalized="$(normalizeStorePaths "$serviceFile")"
assertFileContent "$serviceFileNormalized" ${
builtins.toFile "expected.service" ''
[Install]
WantedBy=graphical-session.target
[Service]
Environment=PATH=/nix/store/00000000000000000000000000000000-bash/bin
ExecStart=@swayidle@/bin/dummy -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'
Restart=always
Type=simple
[Unit]
ConditionEnvironment=WAYLAND_DISPLAY
Description=Idle manager for Wayland
Documentation=man:swayidle(1)
PartOf=graphical-session.target
''
}
'';
}

0 comments on commit 0b052dd

Please sign in to comment.