{
  config,
  flake,
  osConfig,
  workspaceStrings,
  ...
}:
let
  niri = config.lib.niri.actions;

  inherit (flake.config.machines) devices;

  mars = devices.mars.name;
  deimos = devices.deimos.name;
  host = osConfig.networking.hostName;

  deviceLogic =
    d: m:
    if host == deimos then
      "${d}"
    else if host == mars then
      "${m}"
    else
      "";
in
{
  binds = {
    "Super+z".action = niri.spawn "obsidian";
    "Super+l".action = niri.spawn "slack";
    "Super+h".action = niri.spawn "feishin";
    "Super+g".action = niri.spawn "scrcpy";
    "Super+e".action = niri.spawn "ghostty -e nu -e y";
    "Super+f".action = niri.spawn "ghostty -e zellij a dotfiles";
    "Super+s".action = niri.spawn "steam";
    "Super+n".action = niri.spawn "signal-desktop";
    "Super+t".action = niri.spawn "zeditor";
    "Super+r".action = niri.spawn "thunar";
    "Super+b".action = niri.spawn "floorp";
    "Super+y".action = niri.spawn "freetube";
    "Super+v".action = niri.spawn "vesktop";
    "Super+m".action = niri.spawn "element-desktop";
    "Super+d".action = niri.spawn "ghostty";
    "Super+w".action = niri.spawn "bitwarden";
    "Super+Space".action = niri.spawn "fuzzel";

    "Super+Tab".action = niri.close-window;
    "Super+a".action = niri.maximize-column;
    "Super+left".action = niri.move-column-left;
    "Super+right".action = niri.move-column-right;
    "Super+Shift+Tab".action = niri.fullscreen-window;
    "Super+q".action = niri.switch-preset-column-width;
    "Super+minus".action = niri.set-column-width "-10%";
    "Super+equal".action = niri.set-column-width "+10%";

    "Ctrl+Alt+Down".action = niri.move-window-down-or-to-workspace-down;
    "Ctrl+Alt+Up".action = niri.move-window-up-or-to-workspace-up;
    "Ctrl+Alt+Left".action = niri.consume-or-expel-window-left;
    "Ctrl+Alt+Right".action = niri.consume-or-expel-window-right;

    # "Ctrl+Alt+1".action = niri.move-column-to-workspace workspaceStrings.workspace4;
    # "Ctrl+Alt+2".action = niri.move-column-to-workspace workspaceStrings.workspace2;
    # "Ctrl+Alt+3".action = niri.move-column-to-workspace workspaceStrings.workspace3;
    # "Ctrl+Alt+4".action = niri.move-column-to-workspace workspaceStrings.workspace0;
    # "Ctrl+Alt+5".action = niri.move-column-to-workspace workspaceStrings.workspace1;

    # "Super+Enter".action = niri.toggle-overview;

    "Super+1".action = niri.focus-workspace workspaceStrings.workspace4;
    "Super+2".action = niri.focus-workspace workspaceStrings.workspace2;
    "Super+3".action = niri.focus-workspace workspaceStrings.workspace3;
    "Super+4".action = niri.focus-workspace workspaceStrings.workspace0;
    "Super+5".action = niri.focus-workspace workspaceStrings.workspace1;

    # "Super+1".action = niri.focus-column-or-monitor-left;
    # "Super+2".action = niri.focus-window-or-workspace-up;
    # "Super+3".action = niri.focus-window-or-workspace-down;
    # "Super+4".action = niri.focus-column-or-monitor-right;

    "Super+Shift+s".action = niri.spawn "flameshot gui";
    "Super+Shift+period".action = niri.spawn "emote";

    "XF86MonBrightnessUp".action = niri.spawn "brightnessctl -d ${deviceLogic "amdgpu_bl1" ""} s +10%";
    "XF86MonBrightnessDown".action =
      niri.spawn "brightnessctl -d ${deviceLogic "amdgpu_bl1" ""} s 10%-";
    "XF86AudioRaiseVolume".action = niri.spawn "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05+";
    "XF86AudioLowerVolume".action = niri.spawn "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05-";
    "XF86AudioMute".action = niri.spawn "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
  };
}
