return{{"\109\111\115\115\121\046\110\118\105\109",event="\068\101\102\101\114\114\101\100\085\073\069\110\116\101\114",after=function()(require("\109\111\115\115\121")).setup()local O=require("\109\111\115\115\121\046\115\111\117\114\099\101\115")O:setup({"\116\114\101\101\102\109\116","\099\108\097\110\103-\102\111\114\109\097\116","\110\105\120\102\109\116";"\115\104\102\109\116";"\115\116\121\108\117\097"});(O:add("\115\116\121\108\117\097")):with({filetypes={"\108\117\097"}});(O:add("\112\114\101\116\116\105\101\114")):with({filetypes={"\104\116\109\108";"\109\097\114\107\100\111\119\110";"\097\115\116\114\111","\118\117\101"}})vim.keymap.set("\110","\060\108\111\099\097\108\108\101\097\100\101\114\062\109\102",(require("\109\111\115\115\121")).format)end},{"\110\111\110\101-\108\115\046\110\118\105\109",event="\068\101\102\101\114\114\101\100\085\073\069\110\116\101\114";after=function()local O,V=pcall(require,"\110\117\108\108-\108\115")if not O then return end local G={V.builtins.diagnostics.statix;V.builtins.diagnostics.deadnix;V.builtins.diagnostics.selene,V.builtins.diagnostics.proselint}V.setup({sources=G})vim.api.nvim_create_user_command("\078\117\108\108\084\111\103\103\108\101",function(O)if not O.args or#O.args~=1 or not O.args[1]then return end local G=string.upper(O.args[1])local L,U=pcall(require,"\110\117\108\108-\108\115")if not L then return end local o=V.methods[G]if o then U.toggle({methods=o})end end,{nargs=1;complete=function(O,V,G)local L,U=pcall(require,"\110\117\108\108-\108\115")if not L then return end local o=((vim.iter(pairs(U.methods))):map(function(O,V)return string.lower(O)end)):totable()return o end})end};{"\108\115\112-\115\116\097\116\117\115\046\110\118\105\109"},{"\115\099\104\101\109\097\115\116\111\114\101\046\110\118\105\109"};{"\110\118\105\109-\110\097\118\105\099"};{"\099\114\097\116\101\115\046\110\118\105\109",after=function()(require("\099\114\097\116\101\115")).setup({})end;event="\066\117\102\082\101\097\100 \067\097\114\103\111\046\116\111\109\108"};{"\113\117\105\108\108\046\110\118\105\109",after=function() end},{"\115\121\109\098\111\108-\117\115\097\103\101\046\110\118\105\109";after=function()local O=vim.lsp.protocol.SymbolKind;(require("\115\121\109\098\111\108-\117\115\097\103\101")).setup({hl={link="\076\115\112\073\110\108\097\121\072\105\110\116"};kinds={O.Function;O.Method,O.Constant},vt_position="\101\110\100\095\111\102\095\108\105\110\101";request_pending_text=false})end}}
return {
  {
    "mossy.nvim",
    event = "DeferredUIEnter",
    after = function()
      require("mossy").setup()
      local sources = require("mossy.sources")
      sources:setup({
        "treefmt",
        "clang-format",
        "nixfmt",
        "shfmt",
        "stylua",
      })
      ---@diagnostic disable-next-line: missing-fields
      sources:add("stylua"):with({
        filetypes = { "lua" },
      })
      ---@diagnostic disable-next-line: missing-fields
      sources:add("prettier"):with({
        filetypes = { "html", "markdown", "astro", "vue" },
      })
      vim.keymap.set("n", "<localleader>mf", require("mossy").format)
    end,
  },
  {
    "none-ls.nvim",
    event = "DeferredUIEnter",
    after = function()
      local null_present, null = pcall(require, "null-ls")

      if not null_present then
        return
      end

      local sources = {
        null.builtins.diagnostics.statix,
        null.builtins.diagnostics.deadnix,
        null.builtins.diagnostics.selene,

        -- docs
        null.builtins.diagnostics.proselint,
      }

      null.setup({
        sources = sources,
      })

      vim.api.nvim_create_user_command("NullToggle", function(ev)
        if not ev.args or #ev.args ~= 1 or not ev.args[1] then
          return
        end
        local method_name = string.upper(ev.args[1])
        local ok, nll = pcall(require, "null-ls")

        if not ok then
          return
        end
        local method = null.methods[method_name]
        if method then
          nll.toggle({ methods = method })
        end
      end, {
        nargs = 1,
        complete = function(_, _, _)
          local ok, nll = pcall(require, "null-ls")

          if not ok then
            return
          end
          local methods = vim
            .iter(pairs(nll.methods))
            :map(function(k, _)
              return string.lower(k)
            end)
            :totable()
          return methods
        end,
      })
    end,
  },

  { "lsp-status.nvim" },
  { "schemastore.nvim" },
  { "nvim-navic" },

  {
    "crates.nvim",
    after = function()
      require("crates").setup({})
    end,
    event = "BufRead Cargo.toml",
  },

  {
    "quill.nvim",
    after = function()
      -- require("quill").setup()
    end,
  },
  {
    "symbol-usage.nvim",
    after = function()
      local SymbolKind = vim.lsp.protocol.SymbolKind

      ---@diagnostic disable-next-line: missing-fields
      require("symbol-usage").setup({
        hl = { link = "LspInlayHint" },
        ---@type lsp.SymbolKind[] Symbol kinds what need to be count (see `lsp.SymbolKind`)
        kinds = { SymbolKind.Function, SymbolKind.Method, SymbolKind.Constant },
        ---@type 'above'|'end_of_line'|'textwidth'|'signcolumn' `above` by default
        vt_position = "end_of_line",
        -- Recommended to use with `above` vt_position to avoid "jumping lines"
        ---@type string|table|false
        request_pending_text = false, -- "loading...",
      })
    end,
  },
}
