Created
July 2, 2023 09:43
-
-
Save nekowinston/040ac37065e64dec8f5ad13d4ad8ddf3 to your computer and use it in GitHub Desktop.
My NixOS (no home-manager) minimal neovim setup
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.unstable; [alejandra nil ripgrep]; | |
| 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.unstable.vimPlugins; [ | |
| bufferline-nvim | |
| catppuccin-nvim | |
| comment-nvim | |
| gitsigns-nvim | |
| neogit | |
| null-ls-nvim | |
| nvim-lspconfig | |
| nvim-surround | |
| nvim-tree-lua | |
| nvim-treesitter.withAllGrammars | |
| 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