summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/config/autocmds.lua12
-rw-r--r--lua/config/init.lua4
-rw-r--r--lua/config/keymaps.lua28
-rw-r--r--lua/config/lsp.lua10
-rw-r--r--lua/config/options.lua40
-rw-r--r--lua/config/packages/alpha.lua56
-rw-r--r--lua/config/packages/autopairs.lua3
-rw-r--r--lua/config/packages/barbar.lua19
-rw-r--r--lua/config/packages/blink.lua11
-rw-r--r--lua/config/packages/colorscheme.lua3
-rw-r--r--lua/config/packages/conform.lua23
-rw-r--r--lua/config/packages/fzf.lua5
-rw-r--r--lua/config/packages/gitsigns.lua7
-rw-r--r--lua/config/packages/init.lua18
-rw-r--r--lua/config/packages/lint.lua19
-rw-r--r--lua/config/packages/lspconfig.lua2
-rw-r--r--lua/config/packages/lualine.lua12
-rw-r--r--lua/config/packages/mini.lua1
-rw-r--r--lua/config/packages/tree.lua9
-rw-r--r--lua/config/packages/whichkey.lua1
20 files changed, 283 insertions, 0 deletions
diff --git a/lua/config/autocmds.lua b/lua/config/autocmds.lua
new file mode 100644
index 0000000..46efe8a
--- /dev/null
+++ b/lua/config/autocmds.lua
@@ -0,0 +1,12 @@
+-- highlight when yanking
+vim.api.nvim_create_autocmd("TextYankPost", {
+ desc = "Highlight when yanking text",
+ group = vim.api.nvim_create_augroup("highlight-yank", { clear = true }),
+ callback = function()
+ vim.hl.on_yank()
+ end,
+})
+
+-- update plugins
+vim.api.nvim_create_user_command("PackUpdate", function() vim.pack.update() end, {})
+
diff --git a/lua/config/init.lua b/lua/config/init.lua
new file mode 100644
index 0000000..4be42fe
--- /dev/null
+++ b/lua/config/init.lua
@@ -0,0 +1,4 @@
+require("config.options")
+require("config.keymaps")
+require("config.autocmds")
+require("config.lsp")
diff --git a/lua/config/keymaps.lua b/lua/config/keymaps.lua
new file mode 100644
index 0000000..96dff5e
--- /dev/null
+++ b/lua/config/keymaps.lua
@@ -0,0 +1,28 @@
+-- no op leader key
+vim.keymap.set("n", "<SPACE>", "<Nop>", { desc = "nop leader key" })
+
+-- keep page dwn + up centered
+vim.keymap.set("n", "<C-u>", "<C-u>zz", { desc = "center page up" })
+vim.keymap.set("n", "<C-d>", "<C-d>zz", { desc = "center page down" })
+
+-- keep searching dwn + up centered
+vim.keymap.set("n", "n", "nzzzv", { desc = "center searching" })
+vim.keymap.set("n", "N", "Nzzzv", { desc = "center searching" })
+
+-- clear search highlight
+vim.keymap.set("n", "<Esc>", "<CMD>nohlsearch<CR>", { desc = "clear search highlights" })
+
+-- diagnostics
+vim.keymap.set("n", "<leader>dD", function() vim.diagnostic.setqflist() end, { desc = "Diagnostics: workspace" })
+vim.keymap.set("n", "<leader>dd", function() vim.diagnostic.setloclist() end, { desc = "Diagnostics: file" })
+
+-- Remap for dealing with word wrap
+vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
+vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
+
+-- Diagnostic keymaps
+vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic message' })
+vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' })
+vim.keymap.set('n', '<leader>t', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' })
+vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' })
+
diff --git a/lua/config/lsp.lua b/lua/config/lsp.lua
new file mode 100644
index 0000000..f6f49dd
--- /dev/null
+++ b/lua/config/lsp.lua
@@ -0,0 +1,10 @@
+local lspservers = {
+ "basedpyright",
+ "ruff",
+ "clangd",
+ "rust_analyzer",
+ "lua_ls",
+ "zls",
+}
+vim.lsp.enable(lspservers)
+
diff --git a/lua/config/options.lua b/lua/config/options.lua
new file mode 100644
index 0000000..47fb6f2
--- /dev/null
+++ b/lua/config/options.lua
@@ -0,0 +1,40 @@
+local o = vim.o
+
+vim.o.nu = true
+vim.o.relativenumber = true
+-- tab and indent opts
+vim.o.tabstop = 4
+vim.o.softtabstop = 4
+vim.o.shiftwidth = 4
+vim.o.expandtab = true
+-- indents
+vim.o.breakindent = true
+vim.o.autoindent = true
+vim.o.copyindent = true
+-- no line wrapping
+vim.o.wrap = false
+-- minimum num lines to keep around cursor
+vim.o.scrolloff = 8
+vim.o.sidescrolloff = 8
+-- search
+vim.o.ignorecase = true
+vim.o.smartcase = true
+-- save + undo
+vim.o.swapfile = false
+vim.o.backup = false
+vim.o.undofile = true
+vim.o.hlsearch = false
+-- misc
+vim.o.mouse = 'a'
+vim.o.clipboard = 'unnamedplus'
+vim.o.completeopt = 'menuone,noselect,fuzzy'
+vim.o.termguicolors = true
+
+-- leader keys
+vim.g.mapleader = " "
+vim.g.maplocalleader = "\\"
+
+
+
+-- vim.o.updatetime = 250
+-- vim.o.timeoutlen = 300
diff --git a/lua/config/packages/alpha.lua b/lua/config/packages/alpha.lua
new file mode 100644
index 0000000..5c3c1d8
--- /dev/null
+++ b/lua/config/packages/alpha.lua
@@ -0,0 +1,56 @@
+vim.pack.add({ gh("goolord/alpha-nvim") })
+
+local status_ok, alpha = pcall(require, "alpha")
+if not status_ok then
+ return
+end
+
+local dashboard = require("alpha.themes.dashboard")
+dashboard.section.header.val = {
+ [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣀⣀⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ]],
+ [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣴⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ]],
+ [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣀⠀⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠻⣿⣿⣿⣿⣦⣄⠀⠀⠠⠰⠶⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ]],
+ [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⣤⡤⢀⣴⣿⣿⣿⠏⠀⠋⢉⣠⣿⣿⣿⣿⣿⣿⣿⣤⣄⡀⠈⠙⢿⣿⣿⣿⣧⡀⠐⠻⣶⣶⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ]],
+ [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⠟⠁⠉⢠⣾⣿⣿⡿⠁⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣄⠈⠻⣿⣿⣿⣷⡄⠀⢀⠙⢿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ]],
+ [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠟⢁⡔⠀⣠⣿⣿⣿⡿⠁⣠⣾⣿⣿⠛⣻⣿⣿⡿⠁⠹⣿⣿⣿⣿⣿⣿⣿⣦⡀⠹⣿⣿⣿⣿⡀⠈⢧⡈⢳⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ]],
+ [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡟⢠⡿⠀⢰⣿⣿⣿⡿⠁⣼⣿⣿⡿⠃⣼⣿⠏⠀⠁⣴⣆⠈⠉⠙⢿⣿⣿⣿⣿⣷⡄⢹⣿⣿⣿⣷⠀⠀⢷⡈⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ]],
+ [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⢠⣿⠃⠀⣿⣿⣿⣿⠃⣸⣿⣿⠟⢀⣾⠿⠋⠀⢠⣾⣿⣿⣷⣄⠀⠀⠙⢿⣿⣿⣿⣷⠀⣿⣿⣿⣿⡄⢣⠘⣇⠘⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀ ]],
+ [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⡟⠀⢰⣿⣿⣿⡟⢀⣿⠟⠀⠰⠛⠋⠀⢠⣾⣿⣿⣿⣿⣿⡿⠟⠂⣀⠀⠉⠙⢿⣿⡇⢸⣿⣿⣿⣇⠘⡄⢹⡀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀ ]],
+ [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⡇⠀⠸⣿⣿⣿⡇⠈⠁⠀⠀⡀⠀⢀⣀⣤⣿⣿⣿⣿⣿⣿⣷⣤⣍⣉⣁⣤⣤⣀⠙⠓⠘⣿⣿⣿⣿⠀⣇⢸⣿⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀ ]],
+ [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣾⣿⠁⠀⠀⣿⣿⣿⡇⢠⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⠀⣿⠻⣿⠛⡆⢻⠸⣿⣿⣇⠀⠀⠀⠀⠀⠀⠀⠀ ]],
+ [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⠀⡆⠀⣿⣿⠙⡇⢸⣿⣿⡿⠿⠟⠋⠙⢻⣿⣿⣿⣿⣿⣿⣿⣿⠛⠙⠛⠿⢿⣿⣿⣿⠀⡟⠀⣿⠀⡇⢈⣀⠛⠛⠻⠀⠀⠀⠀⠀⠀⠀⠀ ]],
+ [[ ⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⣀⣀⡀⠀⠀⢻⣿⡆⢁⠘⣿⣿⣇⣀⣀⣀⣠⣼⣿⣿⣿⣿⣿⣿⣿⣿⣦⣀⣀⠀⢠⣿⣿⣿⠀⠇⢰⣿⠀⡇⢠⣌⣉⣉⠓⠒⠶⠶⠤⠤⣤⣀⠀ ]],
+ [[ ⠀⠈⠓⠶⢄⠐⠲⠀⡄⢾⣿⣿⣿⣧⠀⠘⣿⡇⠘⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⢸⣿⠀⠁⢸⣿⣿⣿⠇⢰⣀⣄⠠⠒⠉⠀⠀ ]],
+ [[ ⠀⠀⠀⠀⠀⠀⠘⠛⠇⠀⠹⣿⣿⣿⡄⠀⠹⣷⠀⠁⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⣿⡏⠀⠀⣾⡿⠟⠋⠀⠀⠉⠀⠀⠀⠀⠀⠀ ]],
+ [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡀⠀⠉⣙⠛⠀⠀⠙⡆⠀⠀⢻⣿⣿⣿⣿⣿⣿⡿⠿⣿⠿⠿⣿⠿⣿⣿⣿⣿⣿⣿⣿⣇⢀⡾⠀⠇⠀⠀⢀⡠⠄⢀⣠⣶⡇⠀⠀⠀⠀⠀⠀⠀ ]],
+ [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣷⡆⠉⠀⠀⠀⠀⠀⠀⠀⢺⣿⣿⣿⣿⣿⣿⣿⣶⣶⣶⣶⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠈⢠⣶⣿⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀ ]],
+ [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⡄⠀⠀⠸⣿⠀⠀⠀⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠀⠀⠀⣾⠁⠀⣠⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀ ]],
+ [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣷⠀⠘⡀⢻⡀⠀⠀⠀⠈⠙⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠉⠀⠀⠀⠀⠀⠃⠀⢰⣿⣿⣿⠀⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀ ]],
+ [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠸⣿⣿⡀⠀⣧⠘⡇⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⠿⢿⣿⠿⠿⠛⠋⠁⠀⠀⠀⠀⣀⣀⡀⠀⠀⠀⢸⣿⣿⡿⢰⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀ ]],
+ [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⡀⣿⣿⣇⠀⢿⡄⠃⢸⣿⣿⠀⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⣤⣾⡇⠈⣿⣿⣿⠀⠀⠀⢸⣿⣿⡇⢸⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀ ]],
+ [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠘⠀⣿⡇⣿⣿⣿⡆⠸⣧⠀⠀⣿⡇⠀⠀⠀⠀⠀⠀⠀⠐⣶⣶⣶⣿⣿⣿⣿⣿⡿⠋⠁⠀⣿⣿⡇⠀⠀⠀⣼⣿⣿⡇⠈⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀ ]],
+ [[ ⠀⠀⠀⠀⠀⠀⠀⠀⠘⠀⣿⡇⣿⣿⣿⣷⠀⢿⡀⠀⣿⣇⠀⠱⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⠿⠛⢉⡠⠚⠀⢰⣿⣿⡇⠀⠀⠀⣿⣿⣿⡇⠀⠀⣠⡀⠀⠀⠀⠀⠀⠀⠀ ]],
+ [[ ⠀⠀⠀⠀⠀⠀⠀⢰⡆⠀⢹⡇⢹⣿⣿⣿⡇⠸⡇⠀⢸⣿⡄⠀⢄⣉⠛⠒⠒⠦⠤⠤⠤⠤⠒⠒⠉⣁⣤⠂⠀⣸⣿⣿⠇⢨⡰⢀⣿⣿⣿⡇⠀⣰⣿⣷⡀⠀⠀⠀⠀⠀⠀ ]],
+}
+
+dashboard.section.buttons.val = {
+ dashboard.button("f", " Find file", ":FzfLua files <CR>"),
+ dashboard.button("e", " New file", ":ene <BAR> startinsert <CR>"),
+ dashboard.button("r", " Recently used files", ":FzfLua oldfiles <CR>"),
+ dashboard.button("t", " Find text", ":FzfLua live_grep <CR>"),
+ dashboard.button("c", " Configuration", ":e ~/.config/nvim/init.vim<CR>"),
+ dashboard.button("q", " Quit Neovim", ":qa<CR>"),
+}
+
+local function footer()
+ return "The greatest joy of magic lies in searching for it"
+end
+
+dashboard.section.footer.val = footer()
+
+dashboard.section.footer.opts.hl = "Type"
+dashboard.section.header.opts.hl = "Include"
+dashboard.section.buttons.opts.hl = "Keyword"
+
+dashboard.opts.opts.noautocmd = true
+alpha.setup(dashboard.opts)
diff --git a/lua/config/packages/autopairs.lua b/lua/config/packages/autopairs.lua
new file mode 100644
index 0000000..3e2c018
--- /dev/null
+++ b/lua/config/packages/autopairs.lua
@@ -0,0 +1,3 @@
+vim.pack.add({ gh("windwp/nvim-autopairs") })
+
+require("nvim-autopairs").setup({})
diff --git a/lua/config/packages/barbar.lua b/lua/config/packages/barbar.lua
new file mode 100644
index 0000000..a3b6153
--- /dev/null
+++ b/lua/config/packages/barbar.lua
@@ -0,0 +1,19 @@
+vim.pack.add({ gh("romgrk/barbar.nvim") })
+
+require("barbar").setup({
+ animation = true,
+ auto_hide = true,
+ tabpages = true,
+ gitsigns = {
+ added = { enabled = true, icon = "+" },
+ changed = { enabled = true, icon = "~" },
+ deleted = { enabled = true, icon = "-" },
+ },
+ sidebar_filetypes = {
+ ["neo-tree"] = { event = "BufWipeout", text = "NeoTree" },
+ },
+})
+
+vim.api.nvim_set_keymap("n", "H", "<cmd>BufferPrevious<CR>", { noremap = true, silent = true })
+vim.api.nvim_set_keymap("n", "L", "<cmd>BufferNext<CR>", { noremap = true, silent = true })
+vim.api.nvim_set_keymap("n", "<c-x>", "<cmd>BufferClose<CR>", { noremap = true, silent = true })
diff --git a/lua/config/packages/blink.lua b/lua/config/packages/blink.lua
new file mode 100644
index 0000000..b4f1433
--- /dev/null
+++ b/lua/config/packages/blink.lua
@@ -0,0 +1,11 @@
+vim.pack.add({ { src = gh("saghen/blink.cmp"), version = vim.version.range("1.*") } })
+
+require("blink.cmp").setup({
+ sources = { default = { "lsp", "path" } },
+ signature = { enabled = true }, -- show signature help
+ completion = {
+ documentation = { auto_show = true, auto_show_delay_ms = 500 },
+ list = { selection = { preselect = false, auto_insert = true } },
+ },
+ keymap = { preset = "default" },
+})
diff --git a/lua/config/packages/colorscheme.lua b/lua/config/packages/colorscheme.lua
new file mode 100644
index 0000000..12f8616
--- /dev/null
+++ b/lua/config/packages/colorscheme.lua
@@ -0,0 +1,3 @@
+vim.pack.add({ gh("sainnhe/everforest") })
+
+vim.cmd.colorscheme(color)
diff --git a/lua/config/packages/conform.lua b/lua/config/packages/conform.lua
new file mode 100644
index 0000000..af59b42
--- /dev/null
+++ b/lua/config/packages/conform.lua
@@ -0,0 +1,23 @@
+vim.pack.add({ gh("stevearc/conform.nvim") })
+
+require("conform").setup({
+ default_format_opts = { lsp_format = "fallback", async = true },
+ formatters_by_ft = {
+ rust = { "rustfmt" },
+ lua = { "stylua" },
+ markdown = { "prettier" },
+ makefile = { "bake" },
+ c = { "clang-format" },
+ cpp = { "clang-format" },
+ bash = { "beautysh" }
+ },
+})
+vim.keymap.set({ "n", "x" }, "<leader>lf", function() require("conform").format() end, { desc = "conform format" })
+
+vim.api.nvim_create_autocmd("BufWritePre", {
+ pattern = "*",
+ callback = function(args)
+ require("conform").format({ bufnr = args.buf })
+ end,
+})
+
diff --git a/lua/config/packages/fzf.lua b/lua/config/packages/fzf.lua
new file mode 100644
index 0000000..a40ddfa
--- /dev/null
+++ b/lua/config/packages/fzf.lua
@@ -0,0 +1,5 @@
+vim.pack.add({{ src = gh("ibhagwan/fzf-lua") }})
+
+vim.keymap.set("n", "<leader>/", function() require("fzf-lua").live_grep_native() end, { desc = "fzf live grep" })
+vim.keymap.set("n", "<leader>F", function() require("fzf-lua").files() end, { desc = "fzf find files" })
+
diff --git a/lua/config/packages/gitsigns.lua b/lua/config/packages/gitsigns.lua
new file mode 100644
index 0000000..2161b22
--- /dev/null
+++ b/lua/config/packages/gitsigns.lua
@@ -0,0 +1,7 @@
+vim.pack.add({{ src = gh("lewis6991/gitsigns.nvim") }})
+
+require("gitsigns").setup()
+vim.keymap.set("n", "<leader>gg", "<CMD>Gitsigns<CR>", { desc = "Gitsigns: menu" })
+vim.keymap.set("n", "<leader>gb", "<CMD>Gitsigns blame_line<CR>", { desc = "Gitsigns: blame line" })
+vim.keymap.set("n", "<leader>gd", "<CMD>vert rightb Gitsigns diffthis<CR>", { desc = "Gitsigns: open git diff" })
+
diff --git a/lua/config/packages/init.lua b/lua/config/packages/init.lua
new file mode 100644
index 0000000..0b30698
--- /dev/null
+++ b/lua/config/packages/init.lua
@@ -0,0 +1,18 @@
+gh = function(x)
+ return "https://github.com/" .. x
+end
+
+require("config.packages.alpha")
+require("config.packages.fzf")
+require("config.packages.tree")
+require("config.packages.gitsigns")
+require("config.packages.autopairs")
+require("config.packages.lualine")
+require("config.packages.lspconfig")
+require("config.packages.conform")
+require("config.packages.lint")
+require("config.packages.blink")
+require("config.packages.colorscheme")
+require("config.packages.barbar")
+require("config.packages.mini")
+require("config.packages.whichkey")
diff --git a/lua/config/packages/lint.lua b/lua/config/packages/lint.lua
new file mode 100644
index 0000000..7f423ab
--- /dev/null
+++ b/lua/config/packages/lint.lua
@@ -0,0 +1,19 @@
+vim.pack.add({ gh("mfussenegger/nvim-lint") })
+
+-- linters
+local global_linters = { "typos" }
+require("lint").linters_by_ft = {
+ c = { "clangtidy" },
+ cpp = { "clangtidy" },
+}
+
+local lint = require("lint")
+vim.api.nvim_create_autocmd("BufWritePost", {
+ callback = function()
+ lint.try_lint()
+ for _, linter in ipairs(global_linters) do
+ lint.try_lint(linter)
+ end
+ end,
+})
+
diff --git a/lua/config/packages/lspconfig.lua b/lua/config/packages/lspconfig.lua
new file mode 100644
index 0000000..afb1092
--- /dev/null
+++ b/lua/config/packages/lspconfig.lua
@@ -0,0 +1,2 @@
+vim.pack.add({{ src = gh("neovim/nvim-lspconfig") }})
+
diff --git a/lua/config/packages/lualine.lua b/lua/config/packages/lualine.lua
new file mode 100644
index 0000000..3fa7281
--- /dev/null
+++ b/lua/config/packages/lualine.lua
@@ -0,0 +1,12 @@
+vim.pack.add({{ src = gh("nvim-lualine/lualine.nvim") }})
+
+require("lualine").setup({
+ options = {
+ theme = color,
+ icons_enabled = true,
+ component_separators = { left = '', right = '' },
+ section_separators = { left = '', right = '' },
+ },
+})
+
+
diff --git a/lua/config/packages/mini.lua b/lua/config/packages/mini.lua
new file mode 100644
index 0000000..c2c0a65
--- /dev/null
+++ b/lua/config/packages/mini.lua
@@ -0,0 +1 @@
+vim.pack.add({ gh("echasnovski/mini.icons") })
diff --git a/lua/config/packages/tree.lua b/lua/config/packages/tree.lua
new file mode 100644
index 0000000..cf89af0
--- /dev/null
+++ b/lua/config/packages/tree.lua
@@ -0,0 +1,9 @@
+vim.pack.add({
+ { src = gh("nvim-tree/nvim-tree.lua") },
+ { src = gh("nvim-tree/nvim-web-devicons") },
+})
+
+require("nvim-tree").setup()
+vim.keymap.set("n", "<leader>e", function()
+ require("nvim-tree.api").tree.toggle()
+end, { desc = "File Tree Toggle" })
diff --git a/lua/config/packages/whichkey.lua b/lua/config/packages/whichkey.lua
new file mode 100644
index 0000000..71ff88f
--- /dev/null
+++ b/lua/config/packages/whichkey.lua
@@ -0,0 +1 @@
+vim.pack.add({ gh("folke/which-key.nvim") })