summaryrefslogtreecommitdiff
path: root/pkgs/old-neovim
diff options
context:
space:
mode:
authoroutremonde <outremonde@vivaldi.net>2025-06-10 20:32:00 -0400
committeroutremonde <outremonde@vivaldi.net>2025-06-10 20:32:00 -0400
commit9786eb8672213344d8d1b7bdef12bc94510b20db (patch)
treeb7d79440800c92d32187ab32c636b0830c94a610 /pkgs/old-neovim
initialized repository
Former-commit-id: 84647f22b951a957b2b83885b612115d473f6626
Diffstat (limited to 'pkgs/old-neovim')
-rw-r--r--pkgs/old-neovim/config/init.lua24
-rw-r--r--pkgs/old-neovim/config/lua/autocommands.lua36
-rw-r--r--pkgs/old-neovim/config/lua/mappings.lua29
-rw-r--r--pkgs/old-neovim/config/lua/options.lua70
-rw-r--r--pkgs/old-neovim/config/lua/plugins/actions-preview.lua1
-rw-r--r--pkgs/old-neovim/config/lua/plugins/lspconfig.lua91
-rw-r--r--pkgs/old-neovim/config/lua/plugins/mini-clue.lua51
-rw-r--r--pkgs/old-neovim/config/lua/plugins/mini-comment.lua1
-rw-r--r--pkgs/old-neovim/config/lua/plugins/mini-completion.lua1
-rw-r--r--pkgs/old-neovim/config/lua/plugins/mini-deps.lua8
-rw-r--r--pkgs/old-neovim/config/lua/plugins/mini-icons.lua1
-rw-r--r--pkgs/old-neovim/config/lua/plugins/mini-notify.lua1
-rw-r--r--pkgs/old-neovim/config/lua/plugins/mini-pick.lua24
-rw-r--r--pkgs/old-neovim/config/lua/plugins/mini-sessions.lua31
-rw-r--r--pkgs/old-neovim/config/lua/plugins/mini-snippets.lua10
-rw-r--r--pkgs/old-neovim/config/lua/plugins/mini-starter.lua17
-rw-r--r--pkgs/old-neovim/config/lua/plugins/mini-statusline.lua1
-rw-r--r--pkgs/old-neovim/config/lua/plugins/presence.lua3
-rw-r--r--pkgs/old-neovim/config/lua/plugins/tabby.lua2
-rw-r--r--pkgs/old-neovim/default.nix48
-rw-r--r--pkgs/old-neovim/plan.md29
21 files changed, 479 insertions, 0 deletions
diff --git a/pkgs/old-neovim/config/init.lua b/pkgs/old-neovim/config/init.lua
new file mode 100644
index 0000000..f77e9f8
--- /dev/null
+++ b/pkgs/old-neovim/config/init.lua
@@ -0,0 +1,24 @@
+-- Require extra config files
+require('options')
+require('mappings')
+-- require('autocommands')
+
+-- Require plugins
+require('plugins.mini-deps')
+
+require('plugins.mini-clue')
+require('plugins.mini-comment')
+require('plugins.mini-icons')
+require('plugins.mini-notify')
+require('plugins.mini-pick')
+require('plugins.mini-sessions')
+require('plugins.mini-starter')
+require('plugins.mini-statusline')
+require('plugins.mini-completion')
+require('plugins.mini-snippets')
+
+require('plugins.tabby')
+require('plugins.actions-preview')
+require('plugins.lspconfig')
+
+require('plugins.presence')
diff --git a/pkgs/old-neovim/config/lua/autocommands.lua b/pkgs/old-neovim/config/lua/autocommands.lua
new file mode 100644
index 0000000..85a58c6
--- /dev/null
+++ b/pkgs/old-neovim/config/lua/autocommands.lua
@@ -0,0 +1,36 @@
+-- Autocommands
+
+-- Use relative line number in normal mode and absolute in insert mode
+vim.opt.number = true
+local numbertoggle = vim.api.nvim_create_augroup("numbertoggle", {})
+vim.api.nvim_create_autocmd(
+ { "BufEnter", "FocusGained", "InsertLeave", "WinEnter", "CmdlineLeave" },
+ {
+ group = numbertoggle,
+ callback = function()
+ if vim.opt.number and vim.api.nvim_get_mode() ~= "i" then
+ vim.opt.relativenumber = true
+ end
+ end,
+ }
+)
+
+vim.api.nvim_create_autocmd(
+ { "BufLeave", "FocusLost", "InsertEnter", "WinLeave", "CmdlineEnter" },
+ {
+ group = numbertoggle,
+ callback = function()
+ if vim.opt.number then
+ vim.opt.relativenumber = false
+ vim.cmd("redraw")
+ end
+ end,
+ }
+)
+
+ -- start terminal in insert mode
+vim.api.nvim_create_autocmd("TermOpen", {
+ callback = function()
+ vim.cmd "startinsert!"
+ end,
+})
diff --git a/pkgs/old-neovim/config/lua/mappings.lua b/pkgs/old-neovim/config/lua/mappings.lua
new file mode 100644
index 0000000..e957d53
--- /dev/null
+++ b/pkgs/old-neovim/config/lua/mappings.lua
@@ -0,0 +1,29 @@
+-- Keymap function.
+local keymap = function(mode, key, desc, action)
+ vim.keymap.set(mode, key, action, {noremap = true, silent = true, desc = desc})
+end
+
+-- Map the leader key.
+vim.g.mapleader = ' '
+
+vim.keymap.set("n", "<C-c>", "gcc", {noremap = true, silent = true})
+
+-- Pickers
+keymap("n", "<leader>f", "Open file picker", ":Pick files<cr>")
+keymap("n", "<leader>c", "Open recent file picker", ":Pick oldfiles<cr>")
+keymap("n", "<leader>e", "Open file explorer", ":Pick explorer<cr>")
+keymap("n", "<leader>b", "Open buffer picker", ":Pick buffers<cr>")
+keymap("n", "<leader>/", "Open live grep picker", ":Pick grep_live<cr>")
+keymap("n", "<leader>\\", "Open command palette", ":Pick commands<cr>")
+keymap("n", "<leader>?", "Open help picker", ":Pick help<cr>")
+keymap("n", "<leader>'", "Open last picker", ":Pick resume<cr>")
+
+-- Tabs
+keymap("n", "<leader>t", "Manage tabs", "")
+keymap("n", "<leader>tt", "Open new tab", ":tabnew<cr>")
+keymap("n", "<leader>tq", "Close tab", ":tabclose<cr>")
+keymap("n", "<leader>tn", "Go to next tab", ":tabnext<cr>")
+keymap("n", "<leader>tp", "Go to previous tab", ":tabprev<cr>")
+
+-- QOL Keys
+keymap("t", "<Esc><Esc>", "Exit terminal insert mode", "<C-\\><C-n>")
diff --git a/pkgs/old-neovim/config/lua/options.lua b/pkgs/old-neovim/config/lua/options.lua
new file mode 100644
index 0000000..c67dcc2
--- /dev/null
+++ b/pkgs/old-neovim/config/lua/options.lua
@@ -0,0 +1,70 @@
+-- General Settings
+vim.o.winborder = 'rounded'
+vim.o.showmode = false
+vim.o.icm = 'split'
+vim.o.cia = 'abbr,kind,menu'
+vim.o.mouse = "" -- allow the mouse to be used in neovim
+vim.o.number = true -- set numbered lines
+vim.o.scrolloff = 4 -- minimal number of screen lines to keep above and below the cursor
+vim.o.signcolumn = "yes" -- always show the sign column, otherwise it would shift the text each time
+vim.o.splitbelow = true -- open new split below
+vim.o.splitright = true -- open new split to the right
+vim.o.wrap = true -- display a wrapped line
+vim.o.clipboard = "unnamedplus" -- use system clipboard
+vim.o.sessionoptions = 'curdir,folds,globals,help,tabpages,terminal,winsize' -- Things to save with the session.
+vim.keymap.set("c", "<cr>", function()
+ if vim.fn.pumvisible() == 1 then return '<c-y>' end
+ return '<cr>'
+end, { expr = true }) -- Make enter complete command.
+
+-- Indention
+local indent = 2
+vim.o.autoindent = true -- auto indentation
+vim.o.expandtab = true -- convert tabs to spaces
+vim.o.shiftwidth = indent -- the number of spaces inserted for each indentation
+vim.o.smartindent = true -- make indenting smarter
+vim.o.softtabstop = indent -- when hitting <BS>, pretend like a tab is removed, even if spaces
+vim.o.tabstop = indent -- insert 2 spaces for a tab
+vim.o.shiftround = true -- use multiple of shiftwidth when indenting with "<" and ">"
+
+-- Backups
+vim.o.backup = false -- create a backup file
+vim.o.swapfile = false -- creates a swapfile
+vim.o.writebackup = false -- if a file is being edited by another program, it is not allowed to be edited
+
+-- Search
+vim.o.hlsearch = true -- highlight all matches on previous search pattern
+vim.o.ignorecase = true -- ignore case in search patterns
+vim.o.smartcase = true -- smart case
+
+-- Folding
+vim.o.foldmethod = "expr"
+vim.o.foldexpr = "v:lua.vim.treesitter.foldexpr()" -- Set folder to treesitter.
+vim.o.foldlevel = 99 -- Don't fold initially.
+vim.o.foldnestmax = 4 -- Don't fold if more than 4 folds deep.
+vim.o.foldtext = "" -- Color text in folds.
+
+-- Set Colorscheme
+vim.cmd.colorscheme("oxocarbon")
+vim.o.termguicolors = true
+
+-- Neovide
+if vim.g.neovide then
+ vim.o.guifont = "CodeNewRoman Nerd Font:h12"
+ vim.g.neovide_scale_factor = 0.8
+
+ -- Zoom keymaps.
+ local change_scale_factor = function(delta)
+ vim.g.neovide_scale_factor = vim.g.neovide_scale_factor * delta
+ end
+ vim.keymap.set("n", "<C-=>", function()
+ change_scale_factor(1.1)
+ end)
+ vim.keymap.set("n", "<C-->", function()
+ change_scale_factor(1/1.1)
+ end)
+
+ -- Standard terminal emulator keymaps.
+ vim.api.nvim_set_keymap("c", "<sc-v>", "<C-R>+", { noremap = true }) -- Paste in command mode.
+ vim.api.nvim_set_keymap('t', '<sc-v>', '<C-\\><C-n>"+Pi', {noremap = true}) -- Paste in terminal mode.
+end
diff --git a/pkgs/old-neovim/config/lua/plugins/actions-preview.lua b/pkgs/old-neovim/config/lua/plugins/actions-preview.lua
new file mode 100644
index 0000000..9f3976b
--- /dev/null
+++ b/pkgs/old-neovim/config/lua/plugins/actions-preview.lua
@@ -0,0 +1 @@
+require('actions-preview').setup()
diff --git a/pkgs/old-neovim/config/lua/plugins/lspconfig.lua b/pkgs/old-neovim/config/lua/plugins/lspconfig.lua
new file mode 100644
index 0000000..98b34f2
--- /dev/null
+++ b/pkgs/old-neovim/config/lua/plugins/lspconfig.lua
@@ -0,0 +1,91 @@
+-- vim.keymap.set('n', '<space>d', vim.diagnostic.setloclist, {desc = "Add buffer diagnostics to the location list."})
+
+-- Disable semantic tokens to stop weird highlighting.
+vim.api.nvim_create_autocmd('LspAttach', {
+ callback = function(ev)
+ local client = vim.lsp.get_client_by_id(ev.data.client_id)
+ if client then
+ client.server_capabilities.semanticTokensProvider = nil
+ end
+ end
+})
+
+-- Use LspAttach autocommand to only map the following keys
+-- after the language server attaches to the current buffer
+vim.api.nvim_create_autocmd('LspAttach', {
+ group = vim.api.nvim_create_augroup('UserLspConfig', {}),
+ callback = function(ev)
+ -- Enable completion triggered by <c-x><c-o>
+ vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc'
+
+ -- Buffer local mappings.
+ -- See `:help vim.lsp.*` for documentation on any of the below functions
+
+ local keymap = function(mode, key, desc, action)
+ vim.keymap.set(mode, key, action, {noremap = true, silent = true, desc = desc})
+ end
+
+ keymap('n', 'gD', "Go to declaration", vim.lsp.buf.declaration)
+ keymap('n', 'gd', "Go to definition", vim.lsp.buf.definition)
+ keymap('n', 'gy', "Go to type definition", vim.lsp.buf.type_definition)
+ keymap('n', 'gi', "Go to implementation", vim.lsp.buf.implementation)
+ keymap('n', '<M-k>', "Signature Help", vim.lsp.buf.signature_help)
+ keymap('i', '<M-k>', "Signature Help", vim.lsp.buf.signature_help)
+ keymap('n', "<space>o", "Manage LSP workspace", "")
+ keymap('n', '<space>oa', "Add Workspace Folder", vim.lsp.buf.add_workspace_folder)
+ keymap('n', '<space>or', "Remove Workspace Folder", vim.lsp.buf.remove_workspace_folder)
+ keymap('n', '<space>ol', "List Workspace Folders", function()
+ print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
+ end)
+ keymap('n', '<space>r', "Rename Symbol", vim.lsp.buf.rename)
+ keymap("n", "<leader>s", "Open symbol picker", [[:Pick lsp scope="document_symbol"<cr>]])
+ keymap("n", "<leader>S", "Open workspace symbol picker", [[:Pick lsp scope="workspace_symbol"<cr>]])
+
+ -- LSP Pickers
+ keymap({'n', 'v'}, "<leader>a", "Perform code action", require("actions-preview").code_actions)
+ keymap("n", "<leader>D", "Open workspace diagnostic picker", ":Pick diagnostic<cr>")
+ keymap("n", "<leader>d", "Open diagnostic picker", [[:Pick diagnostic scope="current"<cr>]])
+
+ keymap('n', 'gr', "Buffer References", vim.lsp.buf.references)
+ keymap('n', '<localleader>f', "Format Buffer", function()
+ vim.lsp.buf.format { async = true }
+ end)
+ end,
+})
+
+local lspconfig = require('lspconfig')
+
+-- Configure individual lsps
+lspconfig.nil_ls.setup {}
+lspconfig.lua_ls.setup {
+ on_init = function(client)
+ local path = client.workspace_folders[1].name
+ if vim.loop.fs_stat(path..'/.luarc.json') or vim.loop.fs_stat(path..'/.luarc.jsonc') then
+ return
+ end
+
+ client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, {
+ runtime = {
+ -- Tell the language server which version of Lua you're using
+ -- (most likely LuaJIT in the case of Neovim)
+ version = 'LuaJIT'
+ },
+ -- Make the server aware of Neovim runtime files
+ workspace = {
+ checkThirdParty = false,
+ library = {
+ vim.env.VIMRUNTIME,
+ -- Depending on the usage, you might want to add additional paths here.
+ "${3rd}/luv/library"
+ -- "${3rd}/busted/library",
+ }
+ -- or pull in all of 'runtimepath'. NOTE: this is a lot slower
+ -- library = vim.api.nvim_get_runtime_file("", true)
+ }
+ })
+ end,
+ settings = {
+ Lua = {}
+ }
+}
+lspconfig.marksman.setup {}
diff --git a/pkgs/old-neovim/config/lua/plugins/mini-clue.lua b/pkgs/old-neovim/config/lua/plugins/mini-clue.lua
new file mode 100644
index 0000000..dbfba5e
--- /dev/null
+++ b/pkgs/old-neovim/config/lua/plugins/mini-clue.lua
@@ -0,0 +1,51 @@
+local miniclue = require('mini.clue')
+miniclue.setup({
+ window = {
+ delay = 0,
+ config = {
+ width = 'auto',
+ -- border = 'double',
+ },
+ },
+ triggers = {
+ -- Leader triggers
+ { mode = 'n', keys = '<Leader>' },
+ { mode = 'x', keys = '<Leader>' },
+
+ -- Built-in completion
+ { mode = 'i', keys = '<C-x>' },
+
+ -- `g` key
+ { mode = 'n', keys = 'g' },
+ { mode = 'x', keys = 'g' },
+
+ -- Marks
+ { mode = 'n', keys = "'" },
+ { mode = 'n', keys = '`' },
+ { mode = 'x', keys = "'" },
+ { mode = 'x', keys = '`' },
+
+ -- Registers
+ { mode = 'n', keys = '"' },
+ { mode = 'x', keys = '"' },
+ { mode = 'i', keys = '<C-r>' },
+ { mode = 'c', keys = '<C-r>' },
+
+ -- Window commands
+ { mode = 'n', keys = '<C-w>' },
+
+ -- `z` key
+ { mode = 'n', keys = 'z' },
+ { mode = 'x', keys = 'z' },
+ },
+
+ clues = {
+ -- Enhance this by adding descriptions for <Leader> mapping groups
+ miniclue.gen_clues.builtin_completion(),
+ miniclue.gen_clues.g(),
+ miniclue.gen_clues.marks(),
+ miniclue.gen_clues.registers(),
+ miniclue.gen_clues.windows(),
+ miniclue.gen_clues.z(),
+ },
+})
diff --git a/pkgs/old-neovim/config/lua/plugins/mini-comment.lua b/pkgs/old-neovim/config/lua/plugins/mini-comment.lua
new file mode 100644
index 0000000..1a2a369
--- /dev/null
+++ b/pkgs/old-neovim/config/lua/plugins/mini-comment.lua
@@ -0,0 +1 @@
+require("mini.comment").setup()
diff --git a/pkgs/old-neovim/config/lua/plugins/mini-completion.lua b/pkgs/old-neovim/config/lua/plugins/mini-completion.lua
new file mode 100644
index 0000000..ebfd62b
--- /dev/null
+++ b/pkgs/old-neovim/config/lua/plugins/mini-completion.lua
@@ -0,0 +1 @@
+require('mini.completion').setup()
diff --git a/pkgs/old-neovim/config/lua/plugins/mini-deps.lua b/pkgs/old-neovim/config/lua/plugins/mini-deps.lua
new file mode 100644
index 0000000..1109d59
--- /dev/null
+++ b/pkgs/old-neovim/config/lua/plugins/mini-deps.lua
@@ -0,0 +1,8 @@
+if (mnw ~= nil) then
+ require("mini.deps").setup()
+end
+AddPlugin = function(plugin)
+ if (mnw ~= nil) then
+ MiniDeps.add(plugin)
+ end
+end
diff --git a/pkgs/old-neovim/config/lua/plugins/mini-icons.lua b/pkgs/old-neovim/config/lua/plugins/mini-icons.lua
new file mode 100644
index 0000000..3c5a927
--- /dev/null
+++ b/pkgs/old-neovim/config/lua/plugins/mini-icons.lua
@@ -0,0 +1 @@
+require('mini.icons').setup()
diff --git a/pkgs/old-neovim/config/lua/plugins/mini-notify.lua b/pkgs/old-neovim/config/lua/plugins/mini-notify.lua
new file mode 100644
index 0000000..cd516af
--- /dev/null
+++ b/pkgs/old-neovim/config/lua/plugins/mini-notify.lua
@@ -0,0 +1 @@
+require('mini.notify').setup()
diff --git a/pkgs/old-neovim/config/lua/plugins/mini-pick.lua b/pkgs/old-neovim/config/lua/plugins/mini-pick.lua
new file mode 100644
index 0000000..de6c7ec
--- /dev/null
+++ b/pkgs/old-neovim/config/lua/plugins/mini-pick.lua
@@ -0,0 +1,24 @@
+local win_config = function()
+ local height = math.floor(0.5 * vim.o.lines)
+ local width = math.floor(0.618 * vim.o.columns)
+ return {
+ anchor = 'NW', height = height, width = width,
+ row = math.floor(0.5 * (vim.o.lines - height)),
+ col = math.floor(0.5 * (vim.o.columns - width)),
+ }
+end
+
+require('mini.pick').setup({
+ options = {
+ content_from_bottom = true,
+ use_cache = true,
+ },
+ window = {
+ config = win_config,
+ },
+ -- delay = {
+ -- async = 1,
+ -- busy = 1,
+ -- },
+})
+require('mini.extra').setup()
diff --git a/pkgs/old-neovim/config/lua/plugins/mini-sessions.lua b/pkgs/old-neovim/config/lua/plugins/mini-sessions.lua
new file mode 100644
index 0000000..fe1a843
--- /dev/null
+++ b/pkgs/old-neovim/config/lua/plugins/mini-sessions.lua
@@ -0,0 +1,31 @@
+require('mini.sessions').setup()
+local save_session = function()
+ vim.ui.input({ prompt = "Session to save: " }, function(input)
+ if (input == nil) then
+ return
+ end
+ MiniSessions.write(input)
+ vim.cmd("echon ' '")
+ print("Session created: " .. input)
+ if vim.bo.filetype == 'ministarter' then
+ MiniStarter.refresh()
+ end
+ end)
+end
+local delete_session = function()
+ vim.ui.input({ prompt = "Session to delete: " }, function(input)
+ if (input == nil) then
+ return
+ end
+ MiniSessions.delete(input)
+ vim.cmd("echon ' '")
+ print("Session deleted: " .. input)
+ if vim.bo.filetype == 'ministarter' then
+ MiniStarter.refresh()
+ end
+ end)
+end
+vim.keymap.set("n", "<leader>w", "", {desc = "Manage sessions"})
+vim.keymap.set("n", "<leader>ww", save_session, {desc = "Save the session"})
+vim.keymap.set("n", "<leader>wd", delete_session, {desc = "Delete a session"})
+vim.keymap.set("n", "<leader>wo", MiniSessions.select, {desc = "Open a session"})
diff --git a/pkgs/old-neovim/config/lua/plugins/mini-snippets.lua b/pkgs/old-neovim/config/lua/plugins/mini-snippets.lua
new file mode 100644
index 0000000..3a991eb
--- /dev/null
+++ b/pkgs/old-neovim/config/lua/plugins/mini-snippets.lua
@@ -0,0 +1,10 @@
+local gen_loader = require('mini.snippets').gen_loader
+require('mini.snippets').setup({
+ snippets = {
+ -- gen_loader.from_file('~/.config/nvim/snippets/global.json'),
+
+ -- Load snippets based on current language by reading files from
+ -- "snippets/" subdirectories from 'runtimepath' directories.
+ gen_loader.from_lang(),
+ },
+})
diff --git a/pkgs/old-neovim/config/lua/plugins/mini-starter.lua b/pkgs/old-neovim/config/lua/plugins/mini-starter.lua
new file mode 100644
index 0000000..b39e7f1
--- /dev/null
+++ b/pkgs/old-neovim/config/lua/plugins/mini-starter.lua
@@ -0,0 +1,17 @@
+local starter = require('mini.starter')
+starter.setup({
+ evaluate_single = true,
+ header = "",
+ footer = "",
+ items = {
+ starter.sections.builtin_actions(),
+ starter.sections.sessions(5, true),
+ starter.sections.recent_files(5, true),
+ },
+ content_hooks = {
+ starter.gen_hook.adding_bullet(),
+ starter.gen_hook.indexing('all', { 'Builtin actions' }),
+ starter.gen_hook.padding(3, 2),
+ starter.gen_hook.aligning('center', 'center'),
+ },
+})
diff --git a/pkgs/old-neovim/config/lua/plugins/mini-statusline.lua b/pkgs/old-neovim/config/lua/plugins/mini-statusline.lua
new file mode 100644
index 0000000..4bdfd80
--- /dev/null
+++ b/pkgs/old-neovim/config/lua/plugins/mini-statusline.lua
@@ -0,0 +1 @@
+require('mini.statusline').setup()
diff --git a/pkgs/old-neovim/config/lua/plugins/presence.lua b/pkgs/old-neovim/config/lua/plugins/presence.lua
new file mode 100644
index 0000000..7ffb57f
--- /dev/null
+++ b/pkgs/old-neovim/config/lua/plugins/presence.lua
@@ -0,0 +1,3 @@
+require('presence').setup({
+ neovim_image_text = "Neovim Text Editor",
+})
diff --git a/pkgs/old-neovim/config/lua/plugins/tabby.lua b/pkgs/old-neovim/config/lua/plugins/tabby.lua
new file mode 100644
index 0000000..2ad03ed
--- /dev/null
+++ b/pkgs/old-neovim/config/lua/plugins/tabby.lua
@@ -0,0 +1,2 @@
+vim.o.showtabline = 1
+require('tabby').setup()
diff --git a/pkgs/old-neovim/default.nix b/pkgs/old-neovim/default.nix
new file mode 100644
index 0000000..97a23df
--- /dev/null
+++ b/pkgs/old-neovim/default.nix
@@ -0,0 +1,48 @@
+{
+ pkgs,
+ inputs,
+}:
+inputs.mnw.lib.wrap pkgs {
+ neovim = pkgs.neovim-unwrapped;
+
+ plugins = with pkgs.vimPlugins; {
+ dev.config.pure = ./config;
+ start = [
+ # Core Plugins
+ mini-nvim # Ton of small modules.
+ nvim-lspconfig # Adds lsp presets.
+ actions-preview-nvim # Adds a selector for LSP actions.
+ nvim-treesitter.withAllGrammars # All treesitter grammars.
+ tabby-nvim # Tab bar.
+ friendly-snippets # Extra snippets.
+ lazydev-nvim # Enhances the nvim config editing experience.
+
+ # Colorschemes
+ oxocarbon-nvim # IBM Carbon themes.
+ rose-pine # Rose Pine themes.
+ kanagawa-nvim # Kanagawa themes.
+ everforest # Green themes.
+ nordic-nvim # Warm dark nordic theme.
+
+ # Miscellaneous Plugins
+ presence-nvim # Discord RPC for nvim.
+ cellular-automaton-nvim # Fun useless plugin.
+ ];
+ opt = [];
+ };
+
+ luaFiles = [./config/init.lua];
+
+ extraBinPath = with pkgs; [
+ # LSP Servers
+ lua-language-server # Lua LS
+ nil # Nix LS
+ marksman # Markdown LS
+
+ # Formatters
+ alejandra # Nix Formatter
+
+ # Extra Tools
+ ripgrep
+ ];
+}
diff --git a/pkgs/old-neovim/plan.md b/pkgs/old-neovim/plan.md
new file mode 100644
index 0000000..ade9664
--- /dev/null
+++ b/pkgs/old-neovim/plan.md
@@ -0,0 +1,29 @@
+# Neovim Plan
+
+## Plugins
+
+### Main Plugins
+
+- Statusline: mini-statusline
+- Tabline: mini-tabline
+- Hints: mini-hints
+- File Editor: oil.nvim
+- Fuzzy Finder: telescope
+
+### Other Plugins
+
+- other mini plugins
+
+## Settings
+
+- tabstop 2
+- helix-like keybinds
+
+## Todo
+
+- add mini git support
+- add console clear autocommand
+- make alt key turn hjkl into arrow keys
+- set keys for scrolling in mini.clue
+- configure tabby
+- add AI chat