{ config, pkgs, username, ... }:
{
home.packages = with pkgs; [
dunst
waybar
swww
rofi
# (pkgs.waybar.overrideAttrs (oldAttrs: {
# mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ];
# }))
];
programs.hyprlock = {
enable = true;
settings = {
background = {
monitor = "";
# path = screenshot
color = "rgba(152, 179, 166, 0.9)";
blur_passes = 1;
blur_size = 7;
noise = 0.0117;
contrast = 0.8916;
brightness = 0.8172;
vibrancy = 0.1696;
vibrancy_darkness = 0.0;
};
input-field = {
monitor = "";
size = "200, 50";
outline_thickness = 3;
dots_size = 0.33; # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.15; # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true;
dots_rounding = -1; # -1 default circle, -2 follow input-field rounding
outer_color = "rgb(151515)";
inner_color = "rgb(200, 200, 200)";
font_color = "rgb(10, 10, 10)";
fade_on_empty = true;
fade_timeout = 1000; # Milliseconds before fade_on_empty is triggered.
placeholder_text = ''Input Password...''; # Text rendered in the input box when it's empty.
hide_input = false;
rounding = -1; # -1 means complete rounding (circle/oval)
check_color = "rgb(204, 136, 34)";
fail_color = "rgb(204, 34, 34)"; # if authentication failed, changes outer_color and fail message color
fail_text = "$FAIL ($ATTEMPTS)"; # can be set to empty
fail_transition = 300; # transition time in ms between normal outer_color and fail_color
capslock_color = -1;
numlock_color = -1;
bothlock_color = -1; # when both locks are active. -1 means don't change outer color (same for above)
invert_numlock = false; # change color if numlock is off
position = "0, 200";
halign = "center";
valign = "center";
};
label = [
{
monitor = "";
text = "cmd[update:1000] echo \"$TIME\"";
color = "rgba(200, 200, 200, 1.0)";
font_size = 55;
font_family = "JetBrainsMono Nerd Font";
position = "0, 150";
halign = "center";
valign = "bottom";
shadow_passes = 5;
shadow_size = 10;
}
{
monitor = "";
text = "$USER";
color = "rgba(200, 200, 200, 1.0)";
font_size = 20;
font_family = "JetBrainsMono Nerd Font";
position = "0, 80";
halign = "center";
valign = "bottom";
shadow_passes = 5;
shadow_size = 10;
}
];
};
};
wayland.windowManager.hyprland.enable = true;
wayland.windowManager.hyprland.settings = {
"$mod" = "SUPER";
exec-once = [
"dunst"
"waybar"
];
bind =
[
"$mod, F, exec, firefox"
"$mod, k, exec, kitty"
", Print, exec, grimblast copy area"
"$mod, l, exec, hyprlock" # Add a keybinding to lock the screen
"$mod, C, exec, codium"
"$mod, E, exec, hyprctl dispatch exit"
]
++ (
# workspaces
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
builtins.concatLists (builtins.genList (
x: let
ws = let
c = (x + 1) / 10;
in
builtins.toString (x + 1 - (c * 10));
in [
"$mod, ${ws}, workspace, ${toString (x + 1)}"
"$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}"
]
)
10)
);
# Bind flags
# l -> locked, will also work when an input inhibitor (e.g. a lockscreen) is active.
# r -> release, will trigger on release of a key.
# e -> repeat, will repeat when held.
# n -> non-consuming, key/mouse events will be passed to the active window in addition to triggering the dispatcher.
# m -> mouse, see below
# t -> transparent, cannot be shadowed by other binds.
# i -> ignore mods, will ignore modifiers.
binde = [
", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ --limit 1.3"
];
bindle = [
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
];
bindl = [
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
];
};
}