{ ... }: {
  flake.lib.hyprlandBinds =
    { lib, dmsEnabled ? false, dmsIpcBinds }:
    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, ${dmsIpcBinds.spotlight}"
          "Super, I, exec, ${dmsIpcBinds.settingsFocus}"
          "Super, N, exec, ${dmsIpcBinds.notepad}"
          "ShiftSuper, N, exec, ${dmsIpcBinds.notifications}"
          "Super, M, exec, ${dmsIpcBinds.processlistFocus}"
          "Super, L, exec, ${dmsIpcBinds.lock}"
          "ShiftSuper, V, exec, ${dmsIpcBinds.clipboard}"
        ] ++ [
          "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%-"
      ];
    };
}
