Add hypridle and hyprlock
This commit is contained in:
parent
e19b036d3f
commit
389b051a7a
4 changed files with 246 additions and 1 deletions
|
@ -1,7 +1,8 @@
|
||||||
{ ... }:
|
{ lib, ... }:
|
||||||
{
|
{
|
||||||
aa.isHeadless = false;
|
aa.isHeadless = false;
|
||||||
aa.windowManagers.sway.clamshell.enable = true;
|
aa.windowManagers.sway.clamshell.enable = true;
|
||||||
aa.programs.opencode.enable = true;
|
aa.programs.opencode.enable = true;
|
||||||
aa.windowManagers.hyprland.enable = true;
|
aa.windowManagers.hyprland.enable = true;
|
||||||
|
aa.windowManagers.sway.enable = lib.mkForce true;
|
||||||
}
|
}
|
||||||
|
|
128
modules/home/programs/hyprlock/default.nix
Normal file
128
modules/home/programs/hyprlock/default.nix
Normal file
|
@ -0,0 +1,128 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
inherit (lib) mkIf mkEnableOption mkOption types;
|
||||||
|
|
||||||
|
cfg = config.${namespace}.programs.hyprlock;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.${namespace}.programs.hyprlock = {
|
||||||
|
enable = mkEnableOption "hyprlock";
|
||||||
|
|
||||||
|
backgroundPath = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "screenshot";
|
||||||
|
description = ''
|
||||||
|
Path to background image or "screenshot" to use desktop screenshot
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = mkOption {
|
||||||
|
type = types.attrs;
|
||||||
|
default = {};
|
||||||
|
description = ''
|
||||||
|
Additional hyprlock configuration settings
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
home.packages = [ pkgs.hyprlock ];
|
||||||
|
|
||||||
|
catppuccin.hyprlock.enable = true;
|
||||||
|
|
||||||
|
programs.hyprlock = {
|
||||||
|
enable = true;
|
||||||
|
settings = lib.mkMerge [
|
||||||
|
{
|
||||||
|
general = {
|
||||||
|
hide_cursor = false;
|
||||||
|
ignore_empty_input = false;
|
||||||
|
text_trim = true;
|
||||||
|
fractional_scaling = 2;
|
||||||
|
fail_timeout = 2000;
|
||||||
|
};
|
||||||
|
|
||||||
|
auth = {
|
||||||
|
pam = {
|
||||||
|
enabled = true;
|
||||||
|
module = "hyprlock";
|
||||||
|
};
|
||||||
|
fingerprint = {
|
||||||
|
enabled = false;
|
||||||
|
ready_message = "(Scan fingerprint to unlock)";
|
||||||
|
present_message = "Scanning fingerprint";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
background = [
|
||||||
|
{
|
||||||
|
monitor = "";
|
||||||
|
path = cfg.backgroundPath;
|
||||||
|
color = "rgba(17, 17, 17, 1.0)";
|
||||||
|
blur_passes = 2;
|
||||||
|
blur_size = 7;
|
||||||
|
noise = 0.0117;
|
||||||
|
contrast = 0.8916;
|
||||||
|
brightness = 0.8172;
|
||||||
|
vibrancy = 0.1696;
|
||||||
|
vibrancy_darkness = 0.05;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
# Input field for password
|
||||||
|
input-field = [
|
||||||
|
{
|
||||||
|
monitor = "";
|
||||||
|
size = "300, 50";
|
||||||
|
outline_thickness = 2;
|
||||||
|
dots_size = 0.2;
|
||||||
|
dots_spacing = 0.2;
|
||||||
|
dots_center = true;
|
||||||
|
outer_color = "$lavender";
|
||||||
|
inner_color = "$surface0";
|
||||||
|
font_color = "$text";
|
||||||
|
fade_on_empty = false;
|
||||||
|
placeholder_text = "<span foreground=\"##$textAlpha\">Password...</span>";
|
||||||
|
hide_input = false;
|
||||||
|
position = "0, -120";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
# Time label
|
||||||
|
label = [
|
||||||
|
{
|
||||||
|
monitor = "";
|
||||||
|
text = "cmd[update:1000] echo \"$(date +\"%H:%M\")\"";
|
||||||
|
color = "$text";
|
||||||
|
font_size = 120;
|
||||||
|
font_family = "Hack Nerd Font";
|
||||||
|
position = "0, 300";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
# Date label
|
||||||
|
{
|
||||||
|
monitor = "";
|
||||||
|
text = "cmd[update:1000] echo \"$(date +\"%A, %B %d\")\"";
|
||||||
|
color = "$text";
|
||||||
|
font_size = 24;
|
||||||
|
font_family = "Hack Nerd Font";
|
||||||
|
position = "0, 200";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
cfg.settings
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
110
modules/home/services/hypridle/default.nix
Normal file
110
modules/home/services/hypridle/default.nix
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkIf
|
||||||
|
mkEnableOption
|
||||||
|
mkOption
|
||||||
|
types
|
||||||
|
;
|
||||||
|
|
||||||
|
cfg = config.${namespace}.services.hypridle;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.${namespace}.services.hypridle = {
|
||||||
|
enable = mkEnableOption "hypridle";
|
||||||
|
|
||||||
|
lockTimeout = mkOption {
|
||||||
|
type = types.int;
|
||||||
|
default = 300;
|
||||||
|
description = ''
|
||||||
|
Timeout in seconds before locking the screen
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
displayTimeout = mkOption {
|
||||||
|
type = types.int;
|
||||||
|
default = 330;
|
||||||
|
description = ''
|
||||||
|
Timeout in seconds before turning off the display
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
suspendTimeout = mkOption {
|
||||||
|
type = types.int;
|
||||||
|
default = 1800;
|
||||||
|
description = ''
|
||||||
|
Timeout in seconds before suspending the system
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
brightnessTimeout = mkOption {
|
||||||
|
type = types.int;
|
||||||
|
default = 150;
|
||||||
|
description = ''
|
||||||
|
Timeout in seconds before dimming screen brightness
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
lockCommand = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "${pkgs.hyprlock}/bin/hyprlock";
|
||||||
|
description = ''
|
||||||
|
Command to run when locking the screen
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
home.packages = [ pkgs.hypridle ];
|
||||||
|
|
||||||
|
services.hypridle = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
general = {
|
||||||
|
lock_cmd = "pidof hyprlock || ${cfg.lockCommand}";
|
||||||
|
before_sleep_cmd = "loginctl lock-session";
|
||||||
|
after_sleep_cmd = "hyprctl dispatch dpms on";
|
||||||
|
ignore_dbus_inhibit = false;
|
||||||
|
ignore_systemd_inhibit = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
listener = [
|
||||||
|
# Dim screen brightness
|
||||||
|
{
|
||||||
|
timeout = cfg.brightnessTimeout;
|
||||||
|
on-timeout = "${pkgs.brightnessctl}/bin/brightnessctl -s set 10";
|
||||||
|
on-resume = "${pkgs.brightnessctl}/bin/brightnessctl -r";
|
||||||
|
}
|
||||||
|
# Turn off keyboard backlight (if available)
|
||||||
|
{
|
||||||
|
timeout = cfg.brightnessTimeout;
|
||||||
|
on-timeout = "${pkgs.brightnessctl}/bin/brightnessctl -sd rgb:kbd_backlight set 0";
|
||||||
|
on-resume = "${pkgs.brightnessctl}/bin/brightnessctl -rd rgb:kbd_backlight";
|
||||||
|
}
|
||||||
|
# Lock screen
|
||||||
|
{
|
||||||
|
timeout = cfg.lockTimeout;
|
||||||
|
on-timeout = "loginctl lock-session";
|
||||||
|
}
|
||||||
|
# Turn off display
|
||||||
|
{
|
||||||
|
timeout = cfg.displayTimeout;
|
||||||
|
on-timeout = "hyprctl dispatch dpms off";
|
||||||
|
on-resume = "hyprctl dispatch dpms on && ${pkgs.brightnessctl}/bin/brightnessctl -r";
|
||||||
|
}
|
||||||
|
# Suspend system
|
||||||
|
{
|
||||||
|
timeout = cfg.suspendTimeout;
|
||||||
|
on-timeout = "systemctl suspend";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -62,11 +62,13 @@ in
|
||||||
kitty.enable = true;
|
kitty.enable = true;
|
||||||
fuzzel.enable = true;
|
fuzzel.enable = true;
|
||||||
waybar.enable = true;
|
waybar.enable = true;
|
||||||
|
hyprlock.enable = true;
|
||||||
};
|
};
|
||||||
services = {
|
services = {
|
||||||
gammastep.enable = true;
|
gammastep.enable = true;
|
||||||
playerctld.enable = true;
|
playerctld.enable = true;
|
||||||
swaync.enable = true;
|
swaync.enable = true;
|
||||||
|
hypridle.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -153,6 +155,7 @@ in
|
||||||
exec-once = [
|
exec-once = [
|
||||||
"systemctl --user import-environment DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
|
"systemctl --user import-environment DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
|
||||||
"${pkgs.swaynotificationcenter}/bin/swaync"
|
"${pkgs.swaynotificationcenter}/bin/swaync"
|
||||||
|
"${pkgs.waybar}/bin/waybar"
|
||||||
"hyprpaper"
|
"hyprpaper"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -214,6 +217,9 @@ in
|
||||||
"$mod SHIFT, n, exec, ${pkgs.swaynotificationcenter}/bin/swaync-client -t -sw"
|
"$mod SHIFT, n, exec, ${pkgs.swaynotificationcenter}/bin/swaync-client -t -sw"
|
||||||
"$mod SHIFT, d, exec, ${pkgs.swaynotificationcenter}/bin/swaync-client -d -sw"
|
"$mod SHIFT, d, exec, ${pkgs.swaynotificationcenter}/bin/swaync-client -d -sw"
|
||||||
|
|
||||||
|
"$mod SHIFT, x, exec, hyprctl dispatch exit"
|
||||||
|
"$mod, x, exec, ${pkgs.hyprlock}/bin/hyprlock"
|
||||||
|
|
||||||
# Scratchpad
|
# Scratchpad
|
||||||
"$mod SHIFT, minus, movetoworkspace, special:magic"
|
"$mod SHIFT, minus, movetoworkspace, special:magic"
|
||||||
"$mod, minus, togglespecialworkspace, magic"
|
"$mod, minus, togglespecialworkspace, magic"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue