This repository has been archived on 2024-07-10. You can view files and clone it, but cannot push or open issues or pull requests.
dotfiles-nix/nix/home/neovim/neovim.nix

145 lines
3.3 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{ config, pkgs, ... }:
{
# neovim
programs.neovim = {
enable = true;
defaultEditor = true;
viAlias = true;
vimAlias = true;
# neovim config
extraConfig = ''
" Use tab for trigger completion with characters ahead and navigate.
inoremap <silent><expr> <TAB>
\ pumvisible() ? "\<C-n>" :
\ <SID>check_back_space() ? "\<TAB>" :
\ coc#refresh()
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
function! s:check_back_space() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# '\s'
endfunction
" Use <c-space> to trigger completion.
if has('nvim')
inoremap <silent><expr> <c-space> coc#refresh()
else
inoremap <silent><expr> <c-@> coc#refresh()
endif
" clipboard
set clipboard+=unnamedplus
" terminal title
set title
" auto-complete
set completeopt=menu,menuone,longest
" show number
set number
'';
# lua config
extraLuaConfig = ''
-- set mapleader
vim.g.mapleader = ' '
vim.g.maplocalleader = ' '
-- set vim options
vim.opt.backspace = '2'
vim.opt.laststatus = 2
vim.opt.cursorline = true
-- set scrolloff
vim.opt.scrolloff = 10
-- indentation
vim.opt.tabstop = 2
vim.opt.shiftwidth = 2
vim.opt.expandtab = true
vim.opt.smartindent = true
-- load plugins
-- neo-tree
require("neo-tree").setup({
filesystem = {
filtered_items = {
visible = true,
hide_dotfiles = false,
hide_gitignored = false,
},
},
window = {
position = "left",
width = 45,
mapping_options = {
noremap = true,
nowait = true,
},
mappings = {
["<space>"] = {
"toggle_node",
nowait = false,
},
},
},
})
require("neo-tree.sources.manager").show("filesystem")
-- nvim-treesitter
require("nvim-treesitter").setup({
build = ":TSUpdate",
config = function ()
local configs = require("nvim-treesitter.configs")
configs.setup({
ensure_installed = { "ansible", "css", "lua", "nix,", "yaml" },
sync_install = false,
highlight = { enable = true },
indent = { enable = true },
})
end
})
-- telescope-nvim
local builtin = require("telescope.builtin")
vim.keymap.set('n', '<C-p>', builtin.find_files, {})
-- vimplugin-catppuccin-nvim
require("catppuccin").setup({ flavour = "mocha" })
vim.cmd.colorscheme "catppuccin"
'';
# auto-complete
coc = {
enable = true;
settings = {
"suggest.noselect" = true;
"suggest.enablePreview" = true;
"suggest.enablePreselect" = true;
"suggest.disableKind" = true;
"diagnostic.errorSign" = "";
"diagnostic.infoSign" = "";
"diagnostic.hintSign" = "";
};
};
# plugins
plugins = with pkgs.vimPlugins; [
neo-tree-nvim
nvim-treesitter
telescope-nvim
catppuccin-nvim
];
};
}