{
  config,
  lib,
  ...
}: let
  inherit (lib.modules) mkIf;
  inherit (lib.nvim.lua) toLuaObject;
  inherit (lib.attrsets) mapAttrsToList;
  inherit (lib.generators) mkLuaInline;
  inherit (lib.nvim.dag) entryAnywhere;

  cfg = config.vim.binds.whichKey;
  register = mapAttrsToList (n: v: mkLuaInline "{ '${n}', desc = '${v}' }") cfg.register;
in {
  config = mkIf cfg.enable {
    vim = {
      startPlugins = ["which-key"];

      pluginRC.whichkey = entryAnywhere ''
        local wk = require("which-key")
        wk.setup (${toLuaObject cfg.setupOpts})
        wk.add(${toLuaObject register})
      '';
    };
  };
}