pinwheel: Replace swaylock with hyprlock
Fixes black internal screen after unlocking with external monitor disconnected, and occasional Hyprland crashes on lock.
This commit is contained in:
84
hosts/pinwheel/modules/hyprlock/default.nix
Normal file
84
hosts/pinwheel/modules/hyprlock/default.nix
Normal file
@@ -0,0 +1,84 @@
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
enabled = config.mod.hyprlock.enable;
|
||||
hyprlandEnabled = config.mod.hyprland.enable;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
mod.hyprlock = {
|
||||
enable = lib.mkEnableOption "enable hyprlock 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.hyprlock = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
general = {
|
||||
hide_cursor = true;
|
||||
};
|
||||
|
||||
background = [
|
||||
{
|
||||
color = "rgb(000000)";
|
||||
}
|
||||
];
|
||||
|
||||
input-field = [
|
||||
{
|
||||
size = "250, 50";
|
||||
position = "0, 0";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
outline_thickness = 2;
|
||||
dots_center = true;
|
||||
fade_on_empty = true;
|
||||
placeholder_text = "";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
wayland.windowManager.hyprland = lib.mkIf hyprlandEnabled {
|
||||
settings = {
|
||||
bind =
|
||||
let
|
||||
pause-music = "${pkgs.playerctl}/bin/playerctl -p spotify pause";
|
||||
|
||||
dpmsTimeout = config.mod.hyprlock.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.hyprlock}/bin/hyprlock && ${pkgs.procps}/bin/pkill swayidle
|
||||
'';
|
||||
in
|
||||
[
|
||||
"$mod, x, exec, ${pause-music}; ${dpms-lock}"
|
||||
"$mod SHIFT, x, exec, ${pause-music}; ${pkgs.hyprlock}/bin/hyprlock & sleep 0.5; systemctl suspend"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
security = {
|
||||
polkit.enable = true;
|
||||
|
||||
pam.services.hyprlock = {};
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user