nvim/.config/nvim/lua/plugins.lua

-- ~/.config/nvim/lua/plugins.lua
-- Plugin spec for lazy.nvim. Kept short on purpose.
-- See mercemay.top/src/dotfiles/

return {
  -- colors
  {
    "folke/tokyonight.nvim",
    lazy = false,
    priority = 1000,
    config = function()
      vim.cmd.colorscheme("tokyonight-night")
    end,
  },

  -- treesitter
  {
    "nvim-treesitter/nvim-treesitter",
    build = ":TSUpdate",
    event = { "BufReadPost", "BufNewFile" },
    opts = {
      ensure_installed = {
        "bash", "c", "go", "lua", "markdown", "markdown_inline",
        "python", "rust", "toml", "typescript", "vim", "vimdoc", "yaml",
      },
      highlight = { enable = true },
      indent = { enable = true },
    },
    config = function(_, opts)
      require("nvim-treesitter.configs").setup(opts)
    end,
  },

  -- telescope
  {
    "nvim-telescope/telescope.nvim",
    cmd = "Telescope",
    keys = {
      { "<leader>f", "<cmd>Telescope find_files<cr>", desc = "find files" },
      { "<leader>g", "<cmd>Telescope live_grep<cr>",  desc = "live grep" },
      { "<leader>b", "<cmd>Telescope buffers<cr>",    desc = "buffers" },
      { "<leader>h", "<cmd>Telescope help_tags<cr>",  desc = "help" },
    },
    dependencies = { "nvim-lua/plenary.nvim" },
  },

  -- lsp
  {
    "neovim/nvim-lspconfig",
    event = { "BufReadPre", "BufNewFile" },
    config = function()
      local lsp = require("lspconfig")
      for _, s in ipairs({ "gopls", "rust_analyzer", "pyright", "lua_ls" }) do
        if vim.fn.executable(({
          gopls = "gopls", rust_analyzer = "rust-analyzer",
          pyright = "pyright", lua_ls = "lua-language-server",
        })[s]) == 1 then
          lsp[s].setup({})
        end
      end
    end,
  },

  -- completion
  {
    "saghen/blink.cmp",
    version = "*",
    event = "InsertEnter",
    opts = {
      keymap = { preset = "enter" },
      completion = { documentation = { auto_show = true } },
    },
  },

  -- misc quality-of-life
  { "lewis6991/gitsigns.nvim", event = "BufReadPre", opts = {} },
  { "numToStr/Comment.nvim",   event = "BufReadPost", opts = {} },
  { "windwp/nvim-autopairs",   event = "InsertEnter", opts = {} },
  { "stevearc/oil.nvim",       cmd = "Oil", opts = {} },
}