summaryrefslogtreecommitdiffstats
path: root/nixos/modules/services/x11/xautolock.nix
diff options
context:
space:
mode:
authorMaximilian Bosch <maximilian@mbosch.me>2017-05-07 13:55:56 +0200
committerMaximilian Bosch <maximilian@mbosch.me>2017-05-09 15:02:10 +0200
commit9d1db321feecd7eee73a73f17a1dc187fac52a71 (patch)
treec4f5063ced04069bbdf9244dd52306dc7da9512a /nixos/modules/services/x11/xautolock.nix
parent1321d0006995134b7ef611b72e5cf92eed97343c (diff)
services.xserver.xautolock: add module
Diffstat (limited to 'nixos/modules/services/x11/xautolock.nix')
-rw-r--r--nixos/modules/services/x11/xautolock.nix72
1 files changed, 72 insertions, 0 deletions
diff --git a/nixos/modules/services/x11/xautolock.nix b/nixos/modules/services/x11/xautolock.nix
new file mode 100644
index 000000000000..60ce9e6ed5c0
--- /dev/null
+++ b/nixos/modules/services/x11/xautolock.nix
@@ -0,0 +1,72 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+ cfg = config.services.xserver.xautolock;
+in
+ {
+ options = {
+ services.xserver.xautolock = {
+ enable = mkEnableOption "xautolock";
+ enableNotifier = mkEnableOption "xautolock.notify" // {
+ description = ''
+ Whether to enable the notifier feature of xautolock.
+ This publishes a notification before the autolock.
+ '';
+ };
+
+ time = mkOption {
+ default = 15;
+ type = types.int;
+
+ description = ''
+ Idle time to wait until xautolock locks the computer.
+ '';
+ };
+
+ locker = mkOption {
+ default = "xlock"; # default according to `man xautolock`
+ example = "i3lock -i /path/to/img";
+ type = types.string;
+
+ description = ''
+ The script to use when locking the computer.
+ '';
+ };
+
+ notify = mkOption {
+ default = 10;
+ type = types.int;
+
+ description = ''
+ Time (in seconds) before the actual lock when the notification about the pending lock should be published.
+ '';
+ };
+
+ notifier = mkOption {
+ default = "notify-send 'Locking in 10 seconds'";
+ type = types.string;
+
+ description = ''
+ Notification script to be used to warn about the pending autolock.
+ '';
+ };
+ };
+ };
+
+ config = mkIf cfg.enable {
+ environment.systemPackages = with pkgs; [ 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}\""
+ ]))} &
+ '';
+ };
+ }