nixconf/home-manager/hyprland.nix

69 lines
1.8 KiB
Nix

{ config, pkgs, ... }:
{
# Enable Hyprland compositor
wayland.windowManager.hyprland = {
enable = true;
package = pkgs.hyprland;
xwayland.enable = true;
# Autostart using systemd
systemd.enable = true;
extraConfig = ''
exec-once = waybar
exec-once = swaync
# Monitor settings
monitor = eDP-2, 2560x1600@165, 0x0, auto # main laptop monitor
monitor = DP-3, 1920x1080@119.98, -1280x-1080, auto # left external monitor
monitor = DP-2, 1920x1080@119.98, 640x-1080, auto # right external monitor
debug:disable_logs = false
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mod, mouse:272, movewindow
bindm = $mod, mouse:273, resizewindow
xwayland {
force_zero_scaling = true
}
'';
};
# Hyprland configuration
wayland.windowManager.hyprland.settings = {
"$mod" = "SUPER";
input = { kb_layout = "gb"; };
bind =
[
# Keybinds for starting programs
"$mod, F, exec, firefox"
"$mod, 1, exec, alacritty"
"$mod, D, exec, vesktop"
"$mod, space, exec, anyrun"
# Screenshot tool
", Print, exec, grimblast copy area"
# Screen locking tool
"$mod, l, exec, hyprlock"
# Window management
"$mod, x, killactive"
"$mod, tab, togglefloating"
]
++ (
# 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)
);
};
}