flake/modules/home/desktop/hyprland.nix
2025-09-25 10:55:26 +00:00

72 lines
1.8 KiB
Nix

{
pkgs,
lib,
config,
osConfig,
...
}: {
options.mods.hyprland.enable = lib.mkEnableOption {
description = "enables hyprland";
default = false;
};
config = lib.mkIf config.mods.hyprland.enable {
programs.waybar.enable = true;
programs.fuzzel.enable = true;
wayland.windowManager.hyprland = {
enable = true;
xwayland.enable = true;
# systemd.enable = true;
settings = {
exec-once = "${lib.getExe pkgs.waybar}";
input = {
accel_profile = "flat";
kb_options = "caps:escape";
};
"$mod" = "SUPER";
bind =
[
"$mod, Return, exec, alacritty"
"$mod, D, exec, fuzzel"
"$mod, B, exec, qutebrowser"
"$mod SHIFT, Q, killactive,"
"$mod SHIFT, X, exit,"
"$mod, H, movefocus, l"
"$mod, J, movefocus, d"
"$mod, K, movefocus, u"
"$mod, L, movefocus, r"
"$mod SHIFT, H, movewindow, l"
"$mod SHIFT, J, movewindow, d"
"$mod SHIFT, K, movewindow, u"
"$mod SHIFT, L, movewindow, r"
]
++ (builtins.concatLists (builtins.genList (
# workspaces
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
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));
monitor =
lib.mapAttrsToList
(_: v: "${v.name},${v.config.mode}@${v.config.rate},${v.config.position},1")
osConfig.mods.monitors;
};
};
};
}