diff options
Diffstat (limited to 'nixos/config/neovim')
19 files changed, 322 insertions, 0 deletions
diff --git a/nixos/config/neovim/init.lua b/nixos/config/neovim/init.lua new file mode 100644 index 0000000..4118b3f --- /dev/null +++ b/nixos/config/neovim/init.lua @@ -0,0 +1,2 @@ +require("venomade") +require("plugins") diff --git a/nixos/config/neovim/lua/plugins/autopairs.lua b/nixos/config/neovim/lua/plugins/autopairs.lua new file mode 100644 index 0000000..261f664 --- /dev/null +++ b/nixos/config/neovim/lua/plugins/autopairs.lua @@ -0,0 +1,3 @@ +require('nvim-autopairs').setup({ + disable_filetype = { "TelescopePrompt" , "vim" }, +}) diff --git a/nixos/config/neovim/lua/plugins/catppuccin.lua b/nixos/config/neovim/lua/plugins/catppuccin.lua new file mode 100644 index 0000000..be28c77 --- /dev/null +++ b/nixos/config/neovim/lua/plugins/catppuccin.lua @@ -0,0 +1,29 @@ +require("catppuccin").setup({ + flavour = "mocha", + transparent_background = true, + term_colors = true, + dim_inactive = { + enabled = true, + shade = "dark", + percentage = 0.15, + }, + styles = { + comments = { "italic" }, + conditionals = { "italic" }, + loops = {}, + functions = {}, + keywords = {}, + strings = {}, + variables = {}, + numbers = {}, + booleans = { "bold" }, + properties = {}, + types = {}, + operators = {}, + }, + integrations = { + treesitter = true, + }, +}) + +vim.cmd.colorscheme "catppuccin" diff --git a/nixos/config/neovim/lua/plugins/codeium.lua b/nixos/config/neovim/lua/plugins/codeium.lua new file mode 100644 index 0000000..b5fe92d --- /dev/null +++ b/nixos/config/neovim/lua/plugins/codeium.lua @@ -0,0 +1 @@ +require("codeium").setup({}) diff --git a/nixos/config/neovim/lua/plugins/colorizer.lua b/nixos/config/neovim/lua/plugins/colorizer.lua new file mode 100644 index 0000000..1bd1636 --- /dev/null +++ b/nixos/config/neovim/lua/plugins/colorizer.lua @@ -0,0 +1 @@ +require('colorizer').setup() diff --git a/nixos/config/neovim/lua/plugins/dashboard.lua b/nixos/config/neovim/lua/plugins/dashboard.lua new file mode 100644 index 0000000..0e719c7 --- /dev/null +++ b/nixos/config/neovim/lua/plugins/dashboard.lua @@ -0,0 +1,58 @@ +local alpha = require('alpha') +local dashboard = require('alpha.themes.dashboard') + +local header = { + type = 'text', + val = 'Neovim', + opts = { + position = 'center', + } +} + +local buttons = { + type = 'group', + val = { + { + type = 'text', + val = 'Quick actions', + opts = { position = 'center' } + }, + { + type = 'padding', + val = 1, + }, + dashboard.button('<leader>n', ' New File', + ':enew | NvimTreeFocus<CR>', + { desc = 'New file' }), + dashboard.button('<leader>o', ' Old Files', + ':Telescope oldfiles<CR>', + { desc = 'Old files' }), + dashboard.button('<leader>ff', ' Find File', + ':Telescope find_files<CR>'), + dashboard.button('<leader>fg', ' Find in files') + } +} + +alpha.setup { + layout = { + { + type = 'padding', + val = 2, + }, + header, + { + type = 'padding', + val = 2, + }, + buttons, + { + type = 'padding', + val = 2, + }, + }, +} + +-- vim.api.nvim_create_autocmd("User", { +-- pattern = "AlphaReady", +-- command = "set showtabline=0 | set laststatus=0", +-- }) diff --git a/nixos/config/neovim/lua/plugins/harpoon.lua b/nixos/config/neovim/lua/plugins/harpoon.lua new file mode 100644 index 0000000..dc1b3ce --- /dev/null +++ b/nixos/config/neovim/lua/plugins/harpoon.lua @@ -0,0 +1,10 @@ +local mark = require("harpoon.mark") +local ui = require("harpoon.ui") + +vim.keymap.set("n", "<leader>a", mark.add_file) +vim.keymap.set("n", "<C-h>", ui.toggle_quick_menu) + +vim.keymap.set("n", "<C-n>", function() ui.nav_file(1) end) +vim.keymap.set("n", "<C-e>", function() ui.nav_file(2) end) +vim.keymap.set("n", "<C-i>", function() ui.nav_file(3) end) +vim.keymap.set("n", "<C-o>", function() ui.nav_file(4) end) diff --git a/nixos/config/neovim/lua/plugins/init.lua b/nixos/config/neovim/lua/plugins/init.lua new file mode 100644 index 0000000..c781738 --- /dev/null +++ b/nixos/config/neovim/lua/plugins/init.lua @@ -0,0 +1,11 @@ +require("plugins.lsp") +require("plugins.catppuccin") +require("plugins.treesitter") +require("plugins.telescope") +require("plugins.harpoon") +require("plugins.dashboard") +require("plugins.codeium") +require("plugins.lualine") +require("plugins.autopairs") +require("plugins.colorizer") +require("plugins.lastplace") diff --git a/nixos/config/neovim/lua/plugins/lastplace.lua b/nixos/config/neovim/lua/plugins/lastplace.lua new file mode 100644 index 0000000..52d96cc --- /dev/null +++ b/nixos/config/neovim/lua/plugins/lastplace.lua @@ -0,0 +1 @@ +require('nvim-lastplace').setup() diff --git a/nixos/config/neovim/lua/plugins/lsp.lua b/nixos/config/neovim/lua/plugins/lsp.lua new file mode 100644 index 0000000..b9c5d3c --- /dev/null +++ b/nixos/config/neovim/lua/plugins/lsp.lua @@ -0,0 +1,40 @@ +local lsp_zero = require("lsp-zero") + +lsp_zero.on_attach(function(client,buffer) + lsp_zero.default_keymaps({buffer = bufnr}) + lsp_zero.buffer_autoformat() +end) + +require'lspconfig'.clangd.setup{} +require'lspconfig'.hls.setup{} +require'lspconfig'.nil_ls.setup{} +require'lspconfig'.rust_analyzer.setup{} + +local lspkind = require('lspkind') +local cmp = require('cmp') +local cmp_action = require('lsp-zero').cmp_action() + +cmp.setup({ + preselect = 'none', + completion = { + completeopt = 'menu,menuone,noinsert,noselect' + }, + formatting = { + format = lspkind.cmp_format({ + mode = 'symbol', + maxwidth = 50, + ellipsis_char = '...', + symbol_map = { Codeium = '' }, + }) + }, + mapping = cmp.mapping.preset.insert({ + ['<CR>'] = cmp.mapping.confirm({select = false}), + ['<Tab>'] = cmp_action.tab_complete(), + ['<S-Tab>'] = cmp_action.select_prev_or_fallback(), + ['<C-Space>'] = cmp.mapping.complete(), + }), + sources = { + { name = "nvim_lsp" }, + { name = "codeium" } + } +}) diff --git a/nixos/config/neovim/lua/plugins/lualine.lua b/nixos/config/neovim/lua/plugins/lualine.lua new file mode 100644 index 0000000..5c6c2c0 --- /dev/null +++ b/nixos/config/neovim/lua/plugins/lualine.lua @@ -0,0 +1,13 @@ +require('lualine').setup{ + options = { + theme = 'palenight', + }, + tabline = { + lualine_a = {'buffers'}, + lualine_b = {}, + lualine_c = {}, + lualine_x = {}, + lualine_y = {}, + lualine_z = {}, + }, +} diff --git a/nixos/config/neovim/lua/plugins/telescope.lua b/nixos/config/neovim/lua/plugins/telescope.lua new file mode 100644 index 0000000..a54f9de --- /dev/null +++ b/nixos/config/neovim/lua/plugins/telescope.lua @@ -0,0 +1,7 @@ +local builtin = require('telescope.builtin') +vim.keymap.set('n', '<leader>ff', builtin.find_files, {}) +vim.keymap.set('n', '<leader>fb', builtin.buffers, {}) +vim.keymap.set('n', '<leader>fh', builtin.help_tags, {}) +vim.keymap.set('n', '<leader>fg', function() + builtin.grep_string({ search = vim.fn.input("Grep > ") }); +end) diff --git a/nixos/config/neovim/lua/plugins/treesitter.lua b/nixos/config/neovim/lua/plugins/treesitter.lua new file mode 100644 index 0000000..db84143 --- /dev/null +++ b/nixos/config/neovim/lua/plugins/treesitter.lua @@ -0,0 +1,17 @@ +require'nvim-treesitter.configs'.setup { + -- A list of parser names, or "all" (the five listed parsers should always be installed) + ensure_installed = { "c", "lua", "vim", "vimdoc", "query", "go", "rust", "haskell" }, + + -- Install parsers synchronously (only applied to `ensure_installed`) + sync_install = false, + + -- Automatically install missing parsers when entering buffer + -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally + auto_install = true, + + highlight = { + enable = true, + + additional_vim_regex_highlighting = false, + }, +} diff --git a/nixos/config/neovim/lua/venomade/clipboard.lua b/nixos/config/neovim/lua/venomade/clipboard.lua new file mode 100644 index 0000000..0a53a29 --- /dev/null +++ b/nixos/config/neovim/lua/venomade/clipboard.lua @@ -0,0 +1,14 @@ +vim.cmd('set clipboard+=unnamedplus') + +function CopyToClipboard() + local selected_text = vim.fn.getline("'<,'>") + vim.fn.setreg("+", selected_text) +end + +function PasteFromClipboard() + local clipboard_text = vim.fn.getreg("+") + vim.fn.setline('.', clipboard_text) +end + +vim.api.nvim_set_keymap('x', '<Leader>y', [[:lua CopyToClipboard()<CR>]], { noremap = true, silent = true }) +vim.api.nvim_set_keymap('n', '<Leader>p', [[:lua PasteFromClipboard()<CR>]], { noremap = true, silent = true }) diff --git a/nixos/config/neovim/lua/venomade/config.lua b/nixos/config/neovim/lua/venomade/config.lua new file mode 100644 index 0000000..635f403 --- /dev/null +++ b/nixos/config/neovim/lua/venomade/config.lua @@ -0,0 +1,41 @@ +vim.opt.nu = true +vim.opt.rnu = true + +vim.opt.tabstop = 2 +vim.opt.softtabstop = 2 +vim.opt.shiftwidth = 2 +vim.opt.expandtab = true +vim.opt.autoindent = true + +vim.opt.smartindent = true + +vim.opt.wrap = false + +vim.opt.swapfile = false +vim.opt.backup = false +vim.opt.undodir = os.getenv("HOME") .. "/.vim/undodir" +vim.opt.undofile = true + +vim.opt.hlsearch = false +vim.opt.incsearch = true + +vim.opt.termguicolors = true + +vim.opt.scrolloff = 5 + +vim.opt.updatetime = 50 + +vim.opt.splitbelow = true +vim.opt.splitright = true + +vim.opt.encoding = "utf-8" + +vim.opt.shell = "zsh" + +vim.opt.ignorecase = true +vim.opt.smartcase = true +vim.opt.incsearch = true + +vim.opt.title = true + +vim.cmd "set showtabline=0 | set laststatus=0" diff --git a/nixos/config/neovim/lua/venomade/init.lua b/nixos/config/neovim/lua/venomade/init.lua new file mode 100644 index 0000000..590b6c8 --- /dev/null +++ b/nixos/config/neovim/lua/venomade/init.lua @@ -0,0 +1,5 @@ +require("venomade.remap") +require("venomade.lazy") +require("venomade.config") +require("venomade.clipboard") +require("venomade.neovide") diff --git a/nixos/config/neovim/lua/venomade/lazy.lua b/nixos/config/neovim/lua/venomade/lazy.lua new file mode 100644 index 0000000..3d5bebe --- /dev/null +++ b/nixos/config/neovim/lua/venomade/lazy.lua @@ -0,0 +1,42 @@ +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not vim.loop.fs_stat(lazypath) then + vim.fn.system({ + "git", + "clone", + "--filter=blob:none", + "https://github.com/folke/lazy.nvim.git", + "--branch=stable", + lazypath, + }) +end +vim.opt.rtp:prepend(lazypath) + +require("lazy").setup({ + -- Telescope Fuzzy Finder + {'nvim-telescope/telescope.nvim', tag = '0.1.3', dependencies = {'nvim-lua/plenary.nvim'}}, + -- Catppuccin color scheme + {"catppuccin/nvim", name = "catppuccin", priority = 1000}, + -- Treesitter syntax highlighting + {"nvim-treesitter/nvim-treesitter", build = ":TSUpdate"}, + -- Harpoon bookmarking + {"theprimeagen/harpoon"}, + -- LSP ZERO + {'VonHeikemen/lsp-zero.nvim', branch = 'v3.x'}, + {'neovim/nvim-lspconfig', dependencies = {'hrsh7th/cmp-nvim-lsp'}}, + {'hrsh7th/nvim-cmp', dependencies = {'L3MON4D3/LuaSnip'}}, + -- Codeium AI Completion + {'Exafunction/codeium.nvim', dependencies = {'nvim-lua/plenary.nvim', 'hrsh7th/nvim-cmp'}}, + -- Dashboard + {'goolord/alpha-nvim', dependencies = {'nvim-tree/nvim-web-devicons'}}, + -- LSP Icons + {'onsails/lspkind.nvim'}, + -- Bufferline + {'nvim-lualine/lualine.nvim', dependencies = {'nvim-tree/nvim-web-devicons'}}, + -- Autoparis + {'windwp/nvim-autopairs'}, + -- Color Highlighting + {'norcalli/nvim-colorizer.lua'}, + -- Return to last edit position + {'ethanholz/nvim-lastplace'}, +}) + diff --git a/nixos/config/neovim/lua/venomade/neovide.lua b/nixos/config/neovim/lua/venomade/neovide.lua new file mode 100644 index 0000000..16f5ffb --- /dev/null +++ b/nixos/config/neovim/lua/venomade/neovide.lua @@ -0,0 +1,20 @@ +if vim.g.neovide then + vim.opt.guifont = { "FantasqueSansM Nerd Font", ":h12" } + + vim.g.neovide_scale_factor = 1.0 + + --Transparency + -- Helper function for transparency formatting + local alpha = function() + return string.format("%x", math.floor(255 * vim.g.transparency or 0.8)) + end + + vim.g.neovide_transparency = 0.92 + vim.g.transparency = 0.92 + -- vim.g.neovide_background_color = "#1e1e2e" .. alpha() + + vim.g.neovide_window_blurred = true + vim.g.neovide_floating_blur_amount_x = 2.0 + vim.g.neovide_floating_blur_amount_y = 2.0 + +end diff --git a/nixos/config/neovim/lua/venomade/remap.lua b/nixos/config/neovim/lua/venomade/remap.lua new file mode 100644 index 0000000..a81ba80 --- /dev/null +++ b/nixos/config/neovim/lua/venomade/remap.lua @@ -0,0 +1,7 @@ +vim.g.mapleader = " " +vim.keymap.set("n", "<leader>pv", vim.cmd.Ex) + +-- Buffers +vim.keymap.set("n", "<leader>bk", vim.cmd.bdelete) +vim.keymap.set("n", "<leader>bn", vim.cmd.bnext) +vim.keymap.set("n", "<leader>bp", vim.cmd.bprev) |