return {
  {
    "hrsh7th/nvim-cmp",
    dependencies = {
      { "hrsh7th/cmp-nvim-lua" },
      { "hrsh7th/cmp-nvim-lsp-signature-help" },
      { "hrsh7th/cmp-cmdline" },
      { "hrsh7th/cmp-path" },
      { "hrsh7th/cmp-buffer" },
      {
        "windwp/nvim-autopairs",
        event = "InsertEnter",
        opts = {
          fast_wrap = {},
          disable_filetype = { "TelescopePrompt", "vim" },
          map_cr = true,
        },
        config = function(opts)
          require("nvim-autopairs").setup(opts)
          local cmp_autopairs = require "nvim-autopairs.completion.cmp"
          local cmp = require('cmp')
          require("cmp").event:on("confirm_done", cmp_autopairs.on_confirm_done())
        end
      },
      {
        "lukas-reineke/indent-blankline.nvim",
        event = "User FilePost",
        main = "ibl",
        opts = {}
      }
    },
    opts = function()
      require "config.plugins.cmp"
    end,
  },
  {
    "hrsh7th/cmp-nvim-lsp",
    dependencies = {},
    config = function ()
      local capabilities = require('cmp_nvim_lsp').default_capabilities()

      local lsps = {
        "clangd", "arduino_language_server",
        "lua_ls", "pylsp",
        "texlab", "tinymist",
        "cssls", "html",
      }

      -- Load completion engines
      for _, lsp in pairs(lsps) do
        require('lspconfig')[lsp].setup { capabilities = capabilities }
      end
      end,
  },
  {
    "L3MON4D3/LuaSnip",
    dependencies = {
	    "saadparwaiz1/cmp_luasnip",
	    "rafamadriz/friendly-snippets"
    },
    opts = {}
  }
}
