Skip to content

Commit

Permalink
Revert "nixos/xautolock: rewrite and add some options"
Browse files Browse the repository at this point in the history
This reverts commit 1e0eebf.
  • Loading branch information
Samuel Leathers committed Jan 13, 2018
1 parent b45869e commit bcc2277
Showing 1 changed file with 14 additions and 78 deletions.
92 changes: 14 additions & 78 deletions nixos/modules/services/x11/xautolock.nix
Expand Up @@ -31,17 +31,7 @@ in
type = types.string;

description = ''
The script to use when automatically locking the computer.
'';
};

nowlocker = mkOption {
default = null;
example = "i3lock -i /path/to/img";
type = types.nullOr types.string;

description = ''
The script to use when manually locking the computer with <command>xautolock -locknow</command>.
The script to use when locking the computer.
'';
};

Expand All @@ -55,82 +45,28 @@ in
};

notifier = mkOption {
default = null;
example = literalExample ''
"${pkgs.libnotify}/bin/notify-send \"Locking in 10 seconds\""
'';
type = types.nullOr types.string;
default = "notify-send 'Locking in 10 seconds'";
type = types.string;

description = ''
Notification script to be used to warn about the pending autolock.
'';
};

killer = mkOption {
default = null; # default according to `man xautolock` is none
example = "systemctl suspend";
type = types.nullOr types.string;

description = ''
The script to use when nothing has happend for as long as <option>killtime</option>
'';
};

killtime = mkOption {
default = 20; # default according to `man xautolock`
type = types.int;

description = ''
Minutes xautolock waits until it executes the script specified in <option>killer</option>
(Has to be at least 10 minutes)
'';
};

extraOptions = mkOption {
type = types.listOf types.str;
default = [ ];
example = [ "-detectsleep" ];
description = ''
Additional command-line arguments to pass to
<command>xautolock</command>.
'';
};
};
};

config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [ xautolock ];
systemd.user.services.xautolock = {
description = "xautolock service";
wantedBy = [ "graphical-session.target" ];
partOf = [ "graphical-session.target" ];
serviceConfig = with lib; {
ExecStart = strings.concatStringsSep " " ([
"${pkgs.xautolock}/bin/xautolock"
"-noclose"
"-time ${toString cfg.time}"
"-locker '${cfg.locker}'"
] ++ optionals cfg.enableNotifier [
"-notify ${toString cfg.notify}"
"-notifier '${cfg.notifier}'"
] ++ optionals (cfg.nowlocker != null) [
"-nowlocker '${cfg.nowlocker}'"
] ++ optionals (cfg.killer != null) [
"-killer '${cfg.killer}'"
"-killtime ${toString cfg.killtime}"
] ++ cfg.extraOptions);
Restart = "always";
};
};
assertions = [
{
assertion = cfg.enableNotifier -> cfg.notifier != null;
message = "When enabling the notifier for xautolock, you also need to specify the notify script";
}
{
assertion = cfg.killer != null -> cfg.killtime >= 10;
message = "killtime has to be at least 10 minutes according to `man xautolock`";
}
];

services.xserver.displayManager.sessionCommands = with builtins; with pkgs; ''
${xautolock}/bin/xautolock \
${concatStringsSep " \\\n" ([
"-time ${toString(cfg.time)}"
"-locker ${cfg.locker}"
] ++ optional cfg.enableNotifier (concatStringsSep " " [
"-notify ${toString(cfg.notify)}"
"-notifier \"${cfg.notifier}\""
]))} &
'';
};
}

0 comments on commit bcc2277

Please sign in to comment.