Last active
December 18, 2023 13:51
-
-
Save nekowinston/7889f85979dde2f41fcfb7c03fd7ba89 to your computer and use it in GitHub Desktop.
My basic nvim setup for minimal setups
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| {pkgs, ...}: { | |
| environment.variables.SUDO_EDITOR = "nvim"; | |
| environment.systemPackages = with pkgs; [alejandra nil ripgrep]; | |
| programs.git.enable = true; | |
| programs.neovim = { | |
| enable = true; | |
| defaultEditor = true; | |
| vimAlias = true; | |
| viAlias = true; | |
| configure = { | |
| customRC = '' | |
| colorscheme catppuccin-mocha | |
| set list listchars=tab:→\ ,nbsp:␣,trail:•,precedes:«,extends:» | |
| set et sts=0 ts=2 sw=2 | |
| set nu rnu cc=80 so=6 siso=15 | |
| set ls=3 stal=0 sb spr nowrap | |
| set scl=yes:1 shm+=sI | |
| let g:loaded_netrw=1 | |
| let g:loaded_netrwPlugin=1 | |
| nnoremap <C-N> <cmd>NvimTreeToggle<CR> | |
| nnoremap <space>fd <cmd>Telescope find_files<CR> | |
| nnoremap <space>fg <cmd>Telescope grep_string<CR> | |
| nnoremap <space>ng <cmd>Neogit<CR> | |
| nnoremap <C-H> <C-W><C-H> | |
| nnoremap <C-J> <C-W><C-J> | |
| nnoremap <C-K> <C-W><C-K> | |
| nnoremap <C-L> <C-W><C-L> | |
| nnoremap <C-W>\ <cmd>vsplit<CR> | |
| nnoremap <C-W>- <cmd>split<CR> | |
| tnoremap <Esc> <C-\><C-n> | |
| nnoremap <A-,> <Cmd>BufferLineCyclePrev<CR> | |
| nnoremap <A-.> <Cmd>BufferLineCycleNext<CR> | |
| nnoremap <A-<> <Cmd>BufferLineMovePrev<CR> | |
| nnoremap <A->> <Cmd>BufferLineMoveNext<CR> | |
| nnoremap <A-x> <Cmd>bdelete<CR> | |
| nnoremap <A-X> <Cmd>bdelete!<CR> | |
| autocmd TermOpen * setlocal nonumber norelativenumber | |
| autocmd TermOpen * startinsert | |
| lua << EOF | |
| require("bufferline").setup() | |
| require("Comment").setup() | |
| require("gitsigns").setup() | |
| require("neogit").setup() | |
| require("nvim-surround").setup() | |
| require("nvim-tree").setup() | |
| require("nvim-treesitter.configs").setup({ | |
| highlight = { enable = true } | |
| }) | |
| require("telescope").load_extension("fzf") | |
| local lspconfig = require('lspconfig') | |
| 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 opts = { buffer = ev.buf } | |
| vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) | |
| vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts) | |
| vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts) | |
| vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts) | |
| vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, opts) | |
| vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, opts) | |
| vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, opts) | |
| vim.keymap.set({ 'n', 'v' }, '<space>ca', vim.lsp.buf.code_action, opts) | |
| vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts) | |
| vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts) | |
| vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts) | |
| end, | |
| }) | |
| lspconfig.nil_ls.setup{} | |
| local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) | |
| local null = require("null-ls") | |
| null.setup({ | |
| sources = { null.builtins.formatting.alejandra }, | |
| on_attach = function(client, bufnr) | |
| if client.supports_method("textDocument/formatting") then | |
| vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) | |
| vim.api.nvim_create_autocmd("BufWritePre", { | |
| group = augroup, | |
| buffer = bufnr, | |
| callback = function() | |
| vim.lsp.buf.format({ | |
| bufnr = bufnr, | |
| filter = function(c) | |
| return c.name == "null-ls" | |
| end, | |
| }) | |
| end, | |
| }) | |
| end | |
| end, | |
| }) | |
| local toggle_formatters = function() | |
| null.toggle({ methods = null.methods.FORMATTING }) | |
| end | |
| vim.api.nvim_create_user_command("ToggleFormatters", toggle_formatters, {}) | |
| EOF | |
| ''; | |
| packages.myVimPackage = { | |
| start = with pkgs.vimPlugins; [ | |
| (pkgs.vimPlugins.nvim-treesitter.withPlugins (p: [p.bash p.nix])) | |
| bufferline-nvim | |
| catppuccin-nvim | |
| comment-nvim | |
| gitsigns-nvim | |
| neogit | |
| null-ls-nvim | |
| nvim-lspconfig | |
| nvim-surround | |
| nvim-tree-lua | |
| nvim-web-devicons | |
| plenary-nvim | |
| telescope-fzf-native-nvim | |
| telescope-nvim | |
| ]; | |
| }; | |
| }; | |
| }; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment