return { { "nvim-treesitter/nvim-treesitter", opts = function(_, opts) if type(opts) == "table" then opts.ensure_installed = opts.ensure_installed or {} vim.list_extend(opts.ensure_installed, { "bash" }) end end, }, { "jose-elias-alvarez/null-ls.nvim", opts = function(_, opts) if type(opts) == "table" then opts.sources = opts.sources or {} local null_ls = require("null-ls") vim.list_extend(opts.sources, { null_ls.builtins.code_actions.shellcheck, -- Diagnostics handled by Bash LS null_ls.builtins.formatting.shfmt, }) end end, }, { "neovim/nvim-lspconfig", opts = function(_, opts) if type(opts) == "table" then opts.servers = opts.servers or {} -- Just here because it doesn't work with the default node -- https://github.com/bash-lsp/bash-language-server/issues/418 local brew_prefix = vim.fn.systemlist("brew --prefix")[1] local bashls_script_name = "bash-language-server" local bashls_script_path = vim.fn.systemlist("which " .. bashls_script_name)[1] local bashls_cmd = { brew_prefix .. "/opt/node@16/bin/node", bashls_script_path, "start" } opts.servers.bashls = { cmd = bashls_cmd } end end, }, }