Skip to content

Instantly share code, notes, and snippets.

@nekowinston
Last active December 18, 2023 13:51
Show Gist options
  • Select an option

  • Save nekowinston/7889f85979dde2f41fcfb7c03fd7ba89 to your computer and use it in GitHub Desktop.

Select an option

Save nekowinston/7889f85979dde2f41fcfb7c03fd7ba89 to your computer and use it in GitHub Desktop.
My basic nvim setup for minimal setups
{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