64 lines
1.7 KiB
Nix
64 lines
1.7 KiB
Nix
{ pkgs, lib, config, ... }:
|
|
let
|
|
enabled = config.mod.swaylock.enable;
|
|
hyprlandEnabled = config.mod.hyprland.enable;
|
|
in
|
|
{
|
|
options = {
|
|
mod.swaylock = {
|
|
enable = lib.mkEnableOption "enable swaylock module";
|
|
|
|
dpmsTimeout = lib.mkOption {
|
|
description = "timeout in seconds before DPMS is turned on";
|
|
type = lib.types.str;
|
|
default = "10";
|
|
};
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf enabled {
|
|
home-manager.users.alex = {
|
|
programs.swaylock = {
|
|
enable = true;
|
|
|
|
settings = {
|
|
color = "000000";
|
|
indicator-idle-visible = false;
|
|
show-failed-attempts = true;
|
|
};
|
|
};
|
|
|
|
wayland.windowManager.hyprland = lib.mkIf hyprlandEnabled {
|
|
settings = {
|
|
bind = let
|
|
pause-music = "${pkgs.playerctl}/bin/playerctl -p spotify pause";
|
|
|
|
dpmsTimeout = config.mod.swaylock.dpmsTimeout;
|
|
dpms-lock = pkgs.writeShellScript "dpms-lock" ''
|
|
${pkgs.swayidle}/bin/swayidle \
|
|
timeout ${dpmsTimeout} "${pkgs.hyprland}/bin/hyprctl dispatch dpms off" \
|
|
resume "${pkgs.hyprland}/bin/hyprctl dispatch dpms on" &
|
|
|
|
${pkgs.swaylock}/bin/swaylock && pkill swayidle
|
|
'';
|
|
in
|
|
[
|
|
"$mod, x, exec, ${pause-music}; ${dpms-lock}"
|
|
"$mod SHIFT, x, exec, ${pause-music}; ${pkgs.swaylock}/bin/swaylock -f; systemctl suspend"
|
|
];
|
|
};
|
|
};
|
|
};
|
|
|
|
security = {
|
|
polkit.enable = true;
|
|
|
|
pam.services.swaylock.text = ''
|
|
# PAM configuration file for the swaylock screen locker. By default, it includes
|
|
# the 'login' configuration file (see /etc/pam.d/login)
|
|
auth include login
|
|
'';
|
|
};
|
|
};
|
|
}
|