]> gitweb.ps.run Git - flake_thinkpad/blob - home-common.nix
update
[flake_thinkpad] / home-common.nix
1 { config, pkgs, ... }:
2 {
3   programs.neovim = {
4     enable = true;
5     defaultEditor = true;
6     plugins = with pkgs.vimPlugins; [
7       # fzfWrapper
8       # fzf-vim
9       formatter-nvim
10       goyo-vim
11       vim-visual-multi
12       nvim-lspconfig
13       blink-cmp
14       telescope-nvim
15       undotree
16       which-key-nvim
17       guess-indent-nvim
18     ];
19     extraConfig = ''
20       set number
21       set relativenumber
22       set tabstop=4
23       set shiftwidth=4
24       set expandtab
25       set foldmethod=marker
26       set autoindent
27       set smartindent
28       filetype plugin indent on
29       set signcolumn=yes
30
31       colorscheme habamax
32
33       nnoremap <Down> gj
34       nnoremap <Up> gk
35       vnoremap <Down> gj
36       vnoremap <Up> gk
37       inoremap <Down> <C-o>gj
38       inoremap <Up> <C-o>gk
39       tnoremap <Esc> <C-\><C-n>
40       map <Space> <Leader>
41       nnoremap <Esc> :noh<CR>
42       nnoremap gr :Telescope lsp_references<CR>
43       nnoremap gd :Telescope lsp_definitions<CR>
44       nnoremap <leader>u :UndotreeToggle<CR> :UndotreeFocus<CR>
45       nnoremap <leader>f :Telescope find_files<CR>
46       nnoremap <leader>b :Telescope buffers<CR>
47       nnoremap <leader>e :Telescope diagnostics<CR>
48       nnoremap <leader>g :Telescope live_grep<CR>
49       nnoremap <leader>s :Telescope lsp_document_symbols<CR>
50       nnoremap <leader>r :lua vim.lsp.buf.rename()<CR>
51       nnoremap <leader>n :bnext<CR>
52       nnoremap <leader>m :bprevious<CR>
53       nnoremap <leader><Space> za
54       noremap <leader>y "+y<CR>
55       noremap <leader>p "+p<CR>
56       noremap <leader><S-y> "+<S-y><CR>
57       noremap <leader><S-p> "+<S-p><CR>
58
59       " Format on save
60       " augroup FormatAutogroup
61       "   autocmd!
62       "   autocmd BufWritePost * FormatWrite
63       " augroup END
64
65       " enter insert mode when opening terminal
66       autocmd TermOpen * startinsert
67
68       " Return to last opened position
69       autocmd BufReadPost *
70       \ if line("'\"") > 1 && line("'\"") <= line("$") && &ft !~# 'commit'
71       \ |   exe "normal! g`\""
72       \ | endif
73
74       " Use persistent history.
75       if !isdirectory("/tmp/.vim-undo-dir")
76           call mkdir("/tmp/.vim-undo-dir", "", 0700)
77       endif
78       set undodir=/tmp/.vim-undo-dir
79       set undofile
80     '';
81     extraLuaConfig = ''
82       vim.lsp.enable('zls')
83       vim.lsp.enable('clangd')
84       vim.lsp.config('zuban', {})
85       vim.lsp.enable('zuban')
86       vim.lsp.enable('jdtls')
87       require('guess-indent').setup {}
88       local tl_actions = require("telescope.actions")
89       local tl_builtin = require("telescope.builtin")
90       require('telescope').setup {
91         defaults = {
92           mappings = {
93             i = { ["<esc>"] = tl_actions.close },
94           }
95         }
96       }
97       tl_builtins.buffers { sort_lastused = true, ignore_current_buffer = true }
98       require('formatter').setup {
99         logging = true,
100         log_level = vim.log.levels.WARN,
101         filetype = {
102           c = { require("formatter.filetypes.c").clangformat },
103           cpp = { require("formatter.filetypes.cpp").clangformat },
104           zig = { require("formatter.filetypes.zig").zigfmt },
105           markdown = { require("formatter.filetypes.markdown").denofmt },
106           java = { require("formatter.filetypes.java").google_java_format },
107         }
108       }
109       require('blink.cmp').setup {
110         keymap = {
111           preset = 'none',
112           
113           ['<C-space>'] = { 'show', 'show_documentation', 'hide_documentation' },
114           ['<C-e>'] = { 'hide', 'fallback' },
115           ['<CR>'] = { 'accept', 'fallback' },
116
117           ['<Tab>'] = { 'select_next', 'fallback_to_mappings' },
118           ['<S-Tab>'] = { 'select_prev', 'fallback_to_mappings' },
119
120           ['<C-p>'] = { 'scroll_documentation_up', 'fallback' },
121           ['<C-n'] = { 'scroll_documentation_down', 'fallback' },
122
123           ['<C-k>'] = { 'show_signature', 'hide_signature', 'fallback' },
124         },
125         completion = {
126           list = { selection = { preselect = false, } },
127           documentation = {
128             auto_show = true,
129             -- treesitter_highlighting = false,
130           },
131         },
132         signature = { enabled = true },
133       }
134     '';
135   };
136   programs.helix = {
137     enable = true;
138     settings = {
139       theme = "base16_terminal";
140       editor.cursor-shape = {
141         insert = "bar";
142         normal = "block";
143         select = "underline";
144       };
145       editor.soft-wrap = {
146         enable = true;
147       };
148       editor.file-picker = {
149         hidden = false;
150       };
151       keys.normal."space" = {
152         "space" = "goto_word";
153       };
154     };
155     languages = {
156       language = [{
157         name = "c";
158         auto-format = true;
159         formatter = { command = "clang-format"; args = ["--style=microsoft"]; };
160       }];
161     };
162   };
163
164 }