{ pkgs, lib, config, ... }: { 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, F, 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" ] ++ (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) ); }; }; }; }