9   options.services.xsecurelock = {
 
  11       description = "xsecurelock settings";
 
  12       type = lib.types.submodule {
 
  13         freeformType = with types; attrsOf str;
 
  19     services.xsecurelock.settings = {
 
  20       #XSECURELOCK_DATETIME_FORMAT = mkDefault "";
 
  21       #XSECURELOCK_KEY_%s_COMMAND = mkDefault "";
 
  22       #XSECURELOCK_SWITCH_USER_COMMAND = mkDefault "${pkgs.lightdm}/bin/dm-tool switch-to-greeter";
 
  23       XSECURELOCK_BLANK_DPMS_STATE = mkDefault "off";
 
  24       XSECURELOCK_BLANK_TIMEOUT = mkDefault "1";
 
  25       XSECURELOCK_BURNIN_MITIGATION = mkDefault "100";
 
  26       XSECURELOCK_BURNIN_MITIGATION_DYNAMIC = mkDefault "1";
 
  27       XSECURELOCK_DIM_TIME_MS = mkDefault "2000";
 
  28       XSECURELOCK_DISCARD_FIRST_KEYPRESS = mkDefault "0";
 
  29       XSECURELOCK_FONT = mkDefault "monospace:size=12";
 
  30       XSECURELOCK_PASSWORD_PROMPT = mkDefault "cursor";
 
  31       XSECURELOCK_SAVER = mkDefault "saver_blank";
 
  32       XSECURELOCK_SHOW_DATETIME = mkDefault "1";
 
  33       XSECURELOCK_SHOW_HOSTNAME = mkDefault "1";
 
  34       XSECURELOCK_SHOW_USERNAME = mkDefault "1";
 
  35       XSECURELOCK_WAIT_TIME_MS = mkDefault "2000";
 
  41     services.screen-locker = {
 
  44         pkgs.writeShellScript "xsecurelock" ''
 
  54           ${concatMapStringsSep "\n" (
 
  55             { name, value }: "export " + escapeShellArg name + "=" + escapeShellArg value
 
  56           ) (attrsToList config.services.xsecurelock.settings)}
 
  57           ${pkgs.xsecurelock}/bin/xsecurelock
 
  60       inactiveInterval = mkDefault 3; # minutes
 
  61       xautolock.detectSleep = true;
 
  62       xss-lock.extraOptions = [
 
  63         "--transfer-sleep-lock"
 
  64         #"-n" "${pkgs.xss-lock}/share/doc/xss-lock/dim-screen.sh"