input@{ wm ? null, ...}:
with builtins;
input //
rec {
  # should probably split plasma into plasma-x11 and plasma-wayland at some point
  # not all of these actually work btw
  x11-wms = ["xmonad" "i3"];
  #                                 v :o v
  wayland-wms = ["hyprland" "sway" "plasma"];
  wms = x11-wms ++ wayland-wms;

  # very, very non-exhaustive of course
  is-x11     = elem wm x11-wms;
  is-wayland = elem wm wayland-wms;
}