{
  lib,
  config,
  pkgs,

  ...
}:
let
  inherit (lib) mkEnableOption mkIf;

  cfg = config.marleyos.services.screen-locker;
  hasXorg = config.xsession.enable;
  hasI3 = config.xsession.windowManager.i3.enable;
in
{
  options.marleyos.services.screen-locker.enable = mkEnableOption "screen-locker";

  config = mkIf (cfg.enable && hasXorg) {
    services.screen-locker = {
      enable = true;
      inactiveInterval = 20;

      # exec xss-lock {xss-lock.extraOptions} -- {lockCmd}
      xss-lock.extraOptions = [ "--transfer-sleep-lock" ];
      lockCmd = if hasI3 then "${pkgs.i3lock}/bin/i3lock --nofork" else "";
    };
  };
}
