diff --git a/homeManagerModules/services/swayidle/default.nix b/homeManagerModules/services/swayidle/default.nix new file mode 100644 index 00000000..05e0d0dc --- /dev/null +++ b/homeManagerModules/services/swayidle/default.nix @@ -0,0 +1,63 @@ +{ + config, + lib, + pkgs, + ... +}: let + cfg = config.ar.home; + hyprctl = lib.getExe' config.wayland.windowManager.hyprland.package "hyprctl"; + swaymsg = lib.getExe' config.wayland.windowManager.sway.package "swaymsg"; + +in { + config = lib.mkIf cfg.apps.swayidle.enable { + services.swayidle = { + enable = true; + + events = [ + { + event = "before-sleep"; + command = "${lib.getExe pkgs.playerctl} pause"; + } + { + event = "before-sleep"; + command = "${pkgs.swaylock}/bin/swaylock"; + } + { + event = "lock"; + command = "${pkgs.swaylock}/bin/swaylock"; + } + ]; + + timeouts = + [ + { + timeout = 120; + command = "${lib.getExe pkgs.brightnessctl} -s set 10' resume '${lib.getExe pkgs.brightnessctl} -r"; + } + { + timeout = 600; + command = "${pkgs.swaylock}/bin/swaylock"; + } + ] + ++ lib.optional cfg.desktop.autoSuspend { + timeout = 600; + command = "sleep 2 && ${lib.getExe' pkgs.systemd "systemctl"} suspend'"; + } + ++ lib.optional (!cfg.desktop.autoSuspend) + { + timeout = 600; + command = "${pkgs.swaylock}/bin/swaylock"; + } + ++ lib.optional (!cfg.desktop.autoSuspend && cfg.desktop.hyprland.enable) + { + timeout = 630; + command = "${hyprctl} dispatch dpms off' resume '${hyprctl} dispatch dpms on'"; + } + ++ lib.optional (!cfg.desktop.autoSuspend && cfg.desktop.sway.enable) + { + timeout = 630; + command = "${swaymsg} \"output * dpms off\"' resume '${swaymsg} \"output * dpms on\""; + }; + }; + }; +} diff --git a/homeManagerModules/services/swayosd/default.nix b/homeManagerModules/services/swayosd/default.nix new file mode 100644 index 00000000..42199d3a --- /dev/null +++ b/homeManagerModules/services/swayosd/default.nix @@ -0,0 +1,9 @@ +{ + config, + lib, + ... +}: { + config = lib.mkIf config.ar.home.apps.swayosd.enable { + services.swayosd.enable = true; + }; +}