X-Git-Url: https://gitweb.ps.run/flake_thinkpad/blobdiff_plain/7c1847f5b07fee49bdba44bbadb74dbe96044774..985038c0947bffc23ee6a9509911a599dd13ae62:/home-common.nix diff --git a/home-common.nix b/home-common.nix new file mode 100644 index 0000000..33f7303 --- /dev/null +++ b/home-common.nix @@ -0,0 +1,131 @@ +{ config, pkgs, ... }: +{ + programs.neovim = { + enable = true; + defaultEditor = true; + plugins = with pkgs.vimPlugins; [ + # fzfWrapper + # fzf-vim + formatter-nvim + goyo-vim + vim-visual-multi + nvim-lspconfig + blink-cmp + telescope-nvim + undotree + which-key-nvim + guess-indent-nvim + ]; + extraConfig = '' + set number + set relativenumber + set tabstop=4 + set shiftwidth=4 + set expandtab + set foldmethod=marker + set autoindent + set smartindent + filetype plugin indent on + set signcolumn=yes + + colorscheme habamax + + nnoremap gj + nnoremap gk + vnoremap gj + vnoremap gk + inoremap gj + inoremap gk + tnoremap + map + nnoremap :noh + nnoremap gr :Telescope lsp_references + nnoremap gd :Telescope lsp_definitions + nnoremap u :UndotreeToggle :UndotreeFocus + nnoremap f :Telescope find_files + nnoremap b :Telescope buffers + nnoremap e :Telescope diagnostics + nnoremap g :Telescope live_grep + nnoremap s :Telescope lsp_document_symbols + nnoremap r :lua vim.lsp.buf.rename() + nnoremap n :bnext + nnoremap m :bprevious + noremap y "+y + noremap p "+p + noremap "+ + noremap "+ + + " Format on save + " augroup FormatAutogroup + " autocmd! + " autocmd BufWritePost * FormatWrite + " augroup END + + " enter insert mode when opening terminal + autocmd TermOpen * startinsert + + " Return to last opened position + autocmd BufReadPost * + \ if line("'\"") > 1 && line("'\"") <= line("$") && &ft !~# 'commit' + \ | exe "normal! g`\"" + \ | endif + + " Use persistent history. + if !isdirectory("/tmp/.vim-undo-dir") + call mkdir("/tmp/.vim-undo-dir", "", 0700) + endif + set undodir=/tmp/.vim-undo-dir + set undofile + ''; + extraLuaConfig = '' + vim.lsp.enable('zls') + vim.lsp.enable('clangd') + vim.lsp.config('zuban', {}) + vim.lsp.enable('zuban') + require('guess-indent').setup {} + local actions = require("telescope.actions") + require('telescope').setup { + defaults = { + mappings = { + i = { [""] = actions.close }, + } + } + } + require('formatter').setup { + logging = true, + log_level = vim.log.levels.WARN, + filetype = { + c = { require("formatter.filetypes.c").clangformat }, + cpp = { require("formatter.filetypes.cpp").clangformat }, + zig = { require("formatter.filetypes.zig").zigfmt }, + markdown = { require("formatter.filetypes.markdown").denofmt }, + } + } + require('blink.cmp').setup { + keymap = { + preset = 'none', + + [''] = { 'show', 'show_documentation', 'hide_documentation' }, + [''] = { 'hide', 'fallback' }, + [''] = { 'accept', 'fallback' }, + + [''] = { 'select_next', 'fallback_to_mappings' }, + [''] = { 'select_prev', 'fallback_to_mappings' }, + + [''] = { 'scroll_documentation_up', 'fallback' }, + [''] = { 'show_signature', 'hide_signature', 'fallback' }, + }, + completion = { + list = { selection = { preselect = false, } }, + documentation = { + auto_show = true, + -- treesitter_highlighting = false, + }, + }, + signature = { enabled = true }, + } + ''; + }; +}