{
  pkgs,
  config,
  lib,
  ...
}:
with lib;
with builtins; let
  cfg = config.vim.lsp;
in {
  options.vim.lsp = {
    lspSignature = {
      enable = mkEnableOption "lsp signature viewer";
    };
  };

  config = mkIf (cfg.enable && cfg.lspSignature.enable) {
    vim.startPlugins = ["lsp-signature"];

    vim.luaConfigRC.lsp-signature = nvim.dag.entryAnywhere ''
      -- Enable lsp signature viewer
      require("lsp_signature").setup()
    '';
  };
}