]> gitweb.ps.run Git - flake_thinkpad/blobdiff - home-common.nix
update config
[flake_thinkpad] / home-common.nix
diff --git a/home-common.nix b/home-common.nix
new file mode 100644 (file)
index 0000000..33f7303
--- /dev/null
@@ -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 <Down> gj
+      nnoremap <Up> gk
+      vnoremap <Down> gj
+      vnoremap <Up> gk
+      inoremap <Down> <C-o>gj
+      inoremap <Up> <C-o>gk
+      tnoremap <Esc> <C-\><C-n>
+      map <Space> <Leader>
+      nnoremap <Esc> :noh<CR>
+      nnoremap gr :Telescope lsp_references<CR>
+      nnoremap gd :Telescope lsp_definitions<CR>
+      nnoremap <leader>u :UndotreeToggle<CR> :UndotreeFocus<CR>
+      nnoremap <leader>f :Telescope find_files<CR>
+      nnoremap <leader>b :Telescope buffers<CR>
+      nnoremap <leader>e :Telescope diagnostics<CR>
+      nnoremap <leader>g :Telescope live_grep<CR>
+      nnoremap <leader>s :Telescope lsp_document_symbols<CR>
+      nnoremap <leader>r :lua vim.lsp.buf.rename()<CR>
+      nnoremap <leader>n :bnext<CR>
+      nnoremap <leader>m :bprevious<CR>
+      noremap <leader>y "+y<CR>
+      noremap <leader>p "+p<CR>
+      noremap <leader><S-y> "+<S-y><CR>
+      noremap <leader><S-p> "+<S-p><CR>
+
+      " 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 = { ["<esc>"] = 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',
+          
+          ['<C-space>'] = { 'show', 'show_documentation', 'hide_documentation' },
+          ['<C-e>'] = { 'hide', 'fallback' },
+          ['<CR>'] = { 'accept', 'fallback' },
+
+          ['<Tab>'] = { 'select_next', 'fallback_to_mappings' },
+          ['<S-Tab>'] = { 'select_prev', 'fallback_to_mappings' },
+
+          ['<C-p>'] = { 'scroll_documentation_up', 'fallback' },
+          ['<C-n'] = { 'scroll_documentation_down', 'fallback' },
+
+          ['<C-k>'] = { 'show_signature', 'hide_signature', 'fallback' },
+        },
+        completion = {
+          list = { selection = { preselect = false, } },
+         documentation = {
+           auto_show = true,
+           -- treesitter_highlighting = false,
+         },
+        },
+        signature = { enabled = true },
+      }
+    '';
+  };
+}