diff --git a/homes/x86_64-linux/rafiq/default.nix b/homes/x86_64-linux/rafiq/default.nix index a820e5a..754ac1b 100644 --- a/homes/x86_64-linux/rafiq/default.nix +++ b/homes/x86_64-linux/rafiq/default.nix @@ -14,6 +14,7 @@ desktop.windowManager = "hyprland"; desktop.browser = "firefox"; desktop.terminal = "ghostty"; + desktop.lockscreen = "hyprlock"; home.shellAliases = { v = "nvim"; diff --git a/modules/home/desktop/default.nix b/modules/home/desktop/default.nix index 374906a..f8f0e80 100644 --- a/modules/home/desktop/default.nix +++ b/modules/home/desktop/default.nix @@ -8,6 +8,7 @@ { options.desktop = { windowManager = lib.pantheon.mkStrOption; + lockscreen = lib.pantheon.mkStrOption; browser = lib.pantheon.mkStrOption; terminal = lib.pantheon.mkStrOption; }; diff --git a/modules/home/desktop/lockscreen/default.nix b/modules/home/desktop/lockscreen/default.nix new file mode 100644 index 0000000..920d2ff --- /dev/null +++ b/modules/home/desktop/lockscreen/default.nix @@ -0,0 +1,47 @@ +{ + config, + lib, + ... +}: +{ + config = lib.mkMerge [ + (lib.mkIf (config.desktop.lockscreen == "hyprlock") { + home.sessionVariables.LOCKSCREEN = "hyprlock"; + programs.hyprlock = { + enable = true; + settings = { + general.hide_cursor = true; + general.ignore_empty_input = true; + + background = { + blur_passes = 5; + blur_size = 5; + }; + + label = { + text = ''hi, $USER.''; + font_size = 32; + halign = "center"; + valign = "center"; + position = "0, 0"; + zindex = 1; + shadow_passes = 5; + shadow_size = 5; + }; + + input-field = { + fade_on_empty = true; + size = "200, 45"; + halign = "center"; + valign = "center"; + position = "0, -5%"; + placeholder_text = ""; + zindex = 1; + shadow_passes = 5; + shadow_size = 5; + }; + }; + }; + }) + ]; +} diff --git a/modules/home/desktop/windowManager/hyprland/default.nix b/modules/home/desktop/windowManager/hyprland/default.nix index ea4634b..d45a54e 100644 --- a/modules/home/desktop/windowManager/hyprland/default.nix +++ b/modules/home/desktop/windowManager/hyprland/default.nix @@ -20,6 +20,8 @@ in "${mainMonitor.id}, ${mainMonitor.resolution}@${mainMonitor.refresh-rate}, auto, ${mainMonitor.scale}" ", preferred, auto, 1" ]; + + exec-once = [ "uwsm app -- $LOCKSCREEN" ]; } (import ./decoration.nix) (import ./keybinds.nix) diff --git a/modules/home/desktop/windowManager/hyprland/keybinds.nix b/modules/home/desktop/windowManager/hyprland/keybinds.nix index 20c4f31..2977e91 100644 --- a/modules/home/desktop/windowManager/hyprland/keybinds.nix +++ b/modules/home/desktop/windowManager/hyprland/keybinds.nix @@ -6,6 +6,7 @@ "SUPER, return, exec, uwsm app -- $TERMINAL $MULTIPLEXER" "SUPER, O, exec, uwsm app -- $BROWSER" + "SUPER, Escape, exec, uwsm app -- $LOCKSCREEN" "SUPER, H, cyclenext, visible" "SUPER, L, cyclenext, visible prev" diff --git a/modules/nixos/desktop/default.nix b/modules/nixos/desktop/default.nix index ef2cb76..6e8fbc4 100644 --- a/modules/nixos/desktop/default.nix +++ b/modules/nixos/desktop/default.nix @@ -12,5 +12,6 @@ refresh-rate = lib.pantheon.mkStrOption; }; windowManager = lib.pantheon.mkStrOption; + lockscreen = lib.pantheon.mkStrOption; }; } diff --git a/modules/nixos/desktop/lockscreen/default.nix b/modules/nixos/desktop/lockscreen/default.nix new file mode 100644 index 0000000..ce40153 --- /dev/null +++ b/modules/nixos/desktop/lockscreen/default.nix @@ -0,0 +1,8 @@ +{ config, lib, ... }: +{ + config = lib.mkMerge [ + (lib.mkIf (config.desktop.lockscreen == "hyprlock") { + security.pam.services.hyprlock = { }; + }) + ]; +} diff --git a/systems/x86_64-linux/nemesis/default.nix b/systems/x86_64-linux/nemesis/default.nix index a6084b4..e7573b4 100644 --- a/systems/x86_64-linux/nemesis/default.nix +++ b/systems/x86_64-linux/nemesis/default.nix @@ -16,6 +16,7 @@ hardware.gpu = "nvidia"; desktop.windowManager = "hyprland"; + desktop.lockscreen = "hyprlock"; desktop.mainMonitor = { id = "desc:OOO AN-270W04K"; scale = "2";