{ ... }: {
  flake.lib.hyprlandBinds =
    { lib, dmsEnabled ? false }:
    let
      workspaceBinds =
        (builtins.map (i: "Super, ${toString i}, workspace, ${toString i}") (builtins.genList (n: n + 1) 9))
        ++ (builtins.map (
          i: "ControlSuper, ${toString i}, focusworkspaceoncurrentmonitor, ${toString i}"
        ) (builtins.genList (n: n + 1) 9))
        ++ (builtins.map (i: "ShiftSuper, ${toString i}, movetoworkspacesilent, ${toString i}") (
          builtins.genList (n: n + 1) 9
        ));
    in
    {
      bind =
        [
          "SUPER,T,exec,kitty"
          "ControlSuper,T,exec,konsole"
          "SUPER,D,exec,rofi -show drun"
          "ControlSuper,D,exec,rofi -show window"
          "SUPER,E,exec,nemo"
          "Super, Q, killactive"
          "ControlSuper, Q, exec, hyprctl kill"
          "Super, F, fullscreen, 0"
          "Super, G, fullscreen, 1"
          "ShiftSuper, F, fullscreenstate, 0 3"
          "Super, Minus, splitratio, -0.1"
          "Super, Equal, splitratio, 0.1"
          "AltSuper, Space, togglefloating"
          "Super, P, pin"
        ]
        ++ lib.optionals dmsEnabled [
          "Super, Space, exec, dms ipc call spotlight toggle"
          "Super, I, exec, dms ipc call settings focusOrToggle"
          "Super, N, exec, dms ipc call notepad toggle"
          "ShiftSuper, N, exec, dms ipc call notifications toggle"
          "Super, M, exec, dms ipc call processlist focusOrToggle"
          "Super, L, exec, dms ipc call lock lock"
          "ShiftSuper, V, exec, dms ipc call clipboard toggle"
        ]
        ++ [
          "Super, Tab, cyclenext"
          "Super, Tab, bringactivetotop"
          "Super, left, movefocus, l"
          "Super, right, movefocus, r"
          "Super, up, movefocus, u"
          "Super, down, movefocus, d"
          "ShiftSuper, left, movewindow, l"
          "ShiftSuper, right, movewindow, r"
          "ShiftSuper, up, movewindow, u"
          "ShiftSuper, down, movewindow, d"
        ]
        ++ workspaceBinds;

      bindm = [
        " , mouse:282, movewindow"
        "Super, mouse:272, movewindow"
        "Super, mouse:273, resizewindow"
      ];

      bindl = [
        "Super, mouse_up, splitratio, -0.1"
        "Super, mouse_down, splitratio, 0.1"
        " , XF86AudioPlay, exec, playerctl play-pause"
        " , XF86AudioPrev, exec, playerctl previous"
        " , XF86AudioNext, exec, playerctl next"
        " , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
        " , XF86MonBrightnessDown, exec, brightnessctl s 10%-"
        " , XF86MonBrightnessUp, exec, brightnessctl s +10%"
      ];

      bindel = [
        " , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
        " , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
      ];
    };
}
