return {
  recommended = function()
    return LazyVim.extras.wants({
      ft = "astro",
      root = {
        "astro.config.js",
        "astro.config.mjs",
        "astro.config.cjs",
      },
    })
  end,

  -- depends on the typescript extra
  { import = "lazyvim.plugins.extras.lang.typescript" },

  {
    "nvim-treesitter/nvim-treesitter",
    opts = function(_, opts)
      if type(opts.ensure_installed) == "table" then
        vim.list_extend(opts.ensure_installed, { "astro" })
      end
    end,
  },

  -- LSP Servers
  {
    "neovim/nvim-lspconfig",
    opts = {
      servers = {
        astro = {},
      },
    },
  },

  -- Configure tsserver plugin
  {
    "neovim/nvim-lspconfig",
    opts = function(_, opts)
      LazyVim.extend(opts.servers.vtsls, "settings.vtsls.tsserver.globalPlugins", {
        {
          name = "@astrojs/ts-plugin",
          location = LazyVim.get_pkg_path(
            "astro-language-server",
            "/node_modules/@astrojs/ts-plugin",
            { warn = false }
          ),
          enableForWorkspaceTypeScriptVersions = true,
        },
      })
    end,
  },
}