at 23.11-pre 1.3 kB view raw
1{ config, pkgs, lib, ... }: 2 3with lib; 4 5let 6 cfg = config.programs.xss-lock; 7in 8{ 9 options.programs.xss-lock = { 10 enable = mkEnableOption (lib.mdDoc "xss-lock"); 11 12 lockerCommand = mkOption { 13 default = "${pkgs.i3lock}/bin/i3lock"; 14 defaultText = literalExpression ''"''${pkgs.i3lock}/bin/i3lock"''; 15 example = literalExpression ''"''${pkgs.i3lock-fancy}/bin/i3lock-fancy"''; 16 type = types.separatedString " "; 17 description = lib.mdDoc "Locker to be used with xsslock"; 18 }; 19 20 extraOptions = mkOption { 21 default = [ ]; 22 example = [ "--ignore-sleep" ]; 23 type = types.listOf types.str; 24 description = lib.mdDoc '' 25 Additional command-line arguments to pass to 26 {command}`xss-lock`. 27 ''; 28 }; 29 }; 30 31 config = mkIf cfg.enable { 32 systemd.user.services.xss-lock = { 33 description = "XSS Lock Daemon"; 34 wantedBy = [ "graphical-session.target" ]; 35 partOf = [ "graphical-session.target" ]; 36 serviceConfig.ExecStart = with lib; 37 strings.concatStringsSep " " ([ 38 "${pkgs.xss-lock}/bin/xss-lock" "--session \${XDG_SESSION_ID}" 39 ] ++ (map escapeShellArg cfg.extraOptions) ++ [ 40 "--" 41 cfg.lockerCommand 42 ]); 43 }; 44 }; 45}