{ config, lib, pkgs, ... }: let cfg = config.hm.env.swayidle; in { options.hm.env.swayidle.enable = lib.mkEnableOption "enables swayidle"; config = lib.mkIf cfg.enable { services.swayidle = { enable = true; systemdTarget = "graphical-session.target"; events = { before-sleep = "${pkgs.swaylock-effects}/bin/swaylock -f"; lock = "${pkgs.swaylock-effects}/bin/swaylock -f"; }; timeouts = [ { timeout = 300; command = "${pkgs.swaylock-effects}/bin/swaylock -f"; } { timeout = 600; command = "${pkgs.niri-unstable}/bin/niri msg action power-off-monitors"; resumeCommand = "${pkgs.niri-unstable}/bin/niri msg action power-on-monitors"; } ]; }; }; }