summary refs log tree commit diff
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)
downloadnixpkgs-9d1db321feecd7eee73a73f17a1dc187fac52a71.tar
nixpkgs-9d1db321feecd7eee73a73f17a1dc187fac52a71.tar.gz
nixpkgs-9d1db321feecd7eee73a73f17a1dc187fac52a71.tar.bz2
nixpkgs-9d1db321feecd7eee73a73f17a1dc187fac52a71.tar.lz
nixpkgs-9d1db321feecd7eee73a73f17a1dc187fac52a71.tar.xz
nixpkgs-9d1db321feecd7eee73a73f17a1dc187fac52a71.tar.zst
nixpkgs-9d1db321feecd7eee73a73f17a1dc187fac52a71.zip
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 00000000000..60ce9e6ed5c
--- /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}\""
+          ]))} &
+      '';
+    };
+  }