hyprlock: add module
This commit is contained in:
parent
6d3b6dc922
commit
e67ffed047
|
@ -1584,6 +1584,17 @@ in {
|
|||
https://conky.cc/ for more.
|
||||
'';
|
||||
}
|
||||
|
||||
{
|
||||
time = "2024-04-29T19:23:09+00:00";
|
||||
condition = hostPlatform.isLinux;
|
||||
message = ''
|
||||
A new module is available: 'programs.hyprlock'.
|
||||
|
||||
Hyprland's simple, yet multi-threaded and GPU-accelerated screen locking utility.
|
||||
See https://github.com/hyprwm/hyprlock for more.
|
||||
'';
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -116,6 +116,7 @@ let
|
|||
./programs/hstr.nix
|
||||
./programs/htop.nix
|
||||
./programs/hyfetch.nix
|
||||
./programs/hyprlock.nix
|
||||
./programs/i3blocks.nix
|
||||
./programs/i3status-rust.nix
|
||||
./programs/i3status.nix
|
||||
|
|
|
@ -0,0 +1,130 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
with lib;
|
||||
let cfg = config.programs.hyprlock;
|
||||
in {
|
||||
meta.maintainers = [ maintainers.khaneliman maintainers.fufexan ];
|
||||
|
||||
options.programs.hyprlock = {
|
||||
enable = mkEnableOption "" // {
|
||||
description = ''
|
||||
Whether to enable Hyprlock, Hyprland's GPU-accelerated lock screen utility.
|
||||
|
||||
Note that PAM must be configured to enable hyprlock to perform
|
||||
authentication. The package installed through home-manager
|
||||
will *not* be able to unlock the session without this
|
||||
configuration.
|
||||
|
||||
On NixOS, it can be enabled using:
|
||||
|
||||
```nix
|
||||
security.pam.services.hyprlock = {};
|
||||
```
|
||||
'';
|
||||
};
|
||||
|
||||
package = mkOption {
|
||||
description = "The hyprlock package";
|
||||
type = types.package;
|
||||
default = pkgs.hyprlock;
|
||||
};
|
||||
|
||||
settings = lib.mkOption {
|
||||
type = with lib.types;
|
||||
let
|
||||
valueType = nullOr (oneOf [
|
||||
bool
|
||||
int
|
||||
float
|
||||
str
|
||||
path
|
||||
(attrsOf valueType)
|
||||
(listOf valueType)
|
||||
]) // {
|
||||
description = "Hyprlock configuration value";
|
||||
};
|
||||
in valueType;
|
||||
default = { };
|
||||
description = ''
|
||||
Hyprlock configuration written in Nix. Entries with the same key
|
||||
should be written as lists. Variables' and colors' names should be
|
||||
quoted. See <https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/> for more examples.
|
||||
'';
|
||||
example = lib.literalExpression ''
|
||||
{
|
||||
general = {
|
||||
disable_loading_bar = true;
|
||||
grace = 300;
|
||||
hide_cursor = true;
|
||||
no_fade_in = false;
|
||||
};
|
||||
|
||||
background = [
|
||||
{
|
||||
path = "screenshot";
|
||||
blur_passes = 3;
|
||||
blur_size = 8;
|
||||
}
|
||||
];
|
||||
|
||||
input-field = [
|
||||
{
|
||||
size = "200, 50";
|
||||
position = "0, -80";
|
||||
monitor = "";
|
||||
dots_center = true;
|
||||
fade_on_empty = false;
|
||||
font_color = "rgb(202, 211, 245)";
|
||||
inner_color = "rgb(91, 96, 120)";
|
||||
outer_color = "rgb(24, 25, 38)";
|
||||
outline_thickness = 5;
|
||||
placeholder_text = '\'<span foreground="##cad3f5">Password...</span>'\';
|
||||
shadow_passes = 2;
|
||||
}
|
||||
];
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
extraConfig = lib.mkOption {
|
||||
type = lib.types.lines;
|
||||
default = "";
|
||||
example = ''
|
||||
# window resize
|
||||
bind = $mod, S, submap, resize
|
||||
'';
|
||||
description = ''
|
||||
Extra configuration lines to add to `~/.config/hypr/hyprlock.conf`.
|
||||
'';
|
||||
};
|
||||
|
||||
sourceFirst = lib.mkEnableOption ''
|
||||
putting source entries at the top of the configuration
|
||||
'' // {
|
||||
default = true;
|
||||
};
|
||||
|
||||
importantPrefixes = lib.mkOption {
|
||||
type = with lib.types; listOf str;
|
||||
default = [ "$" "monitor" "size" ]
|
||||
++ lib.optionals cfg.sourceFirst [ "source" ];
|
||||
example = [ "$" "monitor" "size" ];
|
||||
description = ''
|
||||
List of prefix of attributes to source at the top of the config.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = [ cfg.package ];
|
||||
|
||||
xdg.configFile."hypr/hyprlock.conf" =
|
||||
let shouldGenerate = cfg.extraConfig != "" || cfg.settings != { };
|
||||
in mkIf shouldGenerate {
|
||||
text = lib.optionalString (cfg.settings != { })
|
||||
(lib.hm.generators.toHyprconf {
|
||||
attrs = cfg.settings;
|
||||
inherit (cfg) importantPrefixes;
|
||||
}) + lib.optionalString (cfg.extraConfig != null) cfg.extraConfig;
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue