1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
|
{ config, pkgs, ... }:
let
colo = config.local.scheme;
local-nvim = pkgs.vimUtils.buildVimPlugin {
pname = "local";
version = "0.2";
src = ../../files/nvim/local;
};
wal = pkgs.vimUtils.buildVimPlugin {
# https://github.com/neovim/neovim/blob/ec8922978eb14fe62671628bb25215743712eac0/src/nvim/highlight_group.c#L432
# ...neovim-unwrapped-0.10.4/share/nvim/runtime/syntax/c.vim
pname = "wal";
version = "3.3";
src = pkgs.writeTextDir "colors/wal-gui.vim" ''
let g:colors_name = "wal-gui"
set background=${colo.lightness}
set pumblend=10
" Lag Fix
hi! link CurSearch Search
" Plugins
hi MiniStarterInactive guifg=#${colo.foreground}
hi MiniStarterQuery guifg=#${colo.color5} gui=bold
hi MiniStarterItemPrefix guifg=#${colo.color4}
" https://github.com/NeogitOrg/neogit/blob/nightly/lua/neogit/lib/hl.lua
hi link NeogitDiffContext Normal
hi link NeogitDiffContextHighlight Normal
hi link NeogitDiffContextCursor Normal
hi link NeogitHunkHeader NeogitHunkHeaderHighlight
" Custom
hi ExtraWhitespace guibg=#${colo.color4}
hi Normal guifg=#${colo.foreground} guibg=#${colo.background}
" Necessary even without tree-sitter.
hi @variable guifg=#${colo.foreground}
" UI
hi Added guifg=#${colo.color2}
hi Changed guifg=#${colo.color3}
hi ColorColumn guibg=#${colo.color6}
hi Conceal guifg=#${colo.color5}
hi CurSearch guifg=#${colo.background} guibg=#${colo.color4}
hi CursorColumn guibg=#${colo.background}
hi CursorLine guibg=#${colo.color5}
hi DiffAdd guifg=#${colo.color2} guibg=#${colo.background}
hi DiffChange guifg=#${colo.color3} guibg=#${colo.background}
hi DiffDelete guifg=#${colo.color1} guibg=#${colo.background} gui=bold
hi DiffText guifg=#${colo.color4} guibg=#${colo.background}
hi Directory guifg=#${colo.color2}
hi ErrorMsg guifg=#${colo.color1}
hi FloatShadow guibg=#${colo.color6} blend=80
hi FloatShadowThrough guibg=#${colo.color6} blend=100
hi Folded guifg=#${colo.color5} guibg=#${colo.background}
hi LineNr guifg=#${colo.color2}
hi MatchParen guifg=#${colo.color2} guibg=#${colo.background} gui=bold
hi ModeMsg guifg=#${colo.color4}
hi MoreMsg guifg=#${colo.color2}
hi NonText guifg=#${colo.color6}
hi NormalFloat guibg=#${colo.color5}
hi Pmenu guibg=#${colo.color5}
hi PmenuThumb guibg=#${colo.color4}
hi PmenuSel guibg=#${colo.color5} " Font color.
hi PmenuSbar guibg=#${colo.color5}
hi Question guifg=#${colo.color3}
hi QuickFixLine guifg=#${colo.color3}
hi RedrawDebugClear guibg=#${colo.color2}
hi RedrawDebugComposed guibg=#${colo.background}
hi RedrawDebugRecompose guibg=#${colo.color3}
hi Removed guifg=#${colo.color1}
hi Search guifg=#${colo.foreground} guibg=#${colo.color1}
hi SignColumn guifg=#${colo.color6}
hi SpecialKey guifg=#${colo.color6}
hi SpellBad guisp=#${colo.color1} gui=undercurl
hi SpellCap guisp=#${colo.color4} gui=undercurl
hi SpellLocal guisp=#${colo.color4} gui=undercurl
hi SpellRare guisp=#${colo.color3} gui=undercurl
hi StatusLine guifg=#${colo.background} guibg=#${colo.color5}
hi StatusLineNC guifg=#${colo.background} guibg=#${colo.color4}
hi Title guifg=#${colo.foreground} gui=bold
hi Visual guibg=#${colo.color3}
hi WarningMsg guifg=#${colo.color3}
hi WinBar guifg=#${colo.color5} guibg=#${colo.background} gui=bold
hi WinBarNC guifg=#${colo.color5} guibg=#${colo.background}
" // Syntax
" "default link Character Constant",
" "default link Number Constant",
" "default link Boolean Constant",
" "default link Float Number",
" "default link Conditional Statement",
" "default link Repeat Statement",
" "default link Label Statement",
" "default link Keyword Statement",
" "default link Exception Statement",
" "default link Include PreProc",
" "default link Define PreProc",
" "default link Macro PreProc",
" "default link PreCondit PreProc",
" "default link StorageClass Type",
" "default link Structure Type",
" "default link Typedef Type",
" "default link Tag Special",
" "default link SpecialChar Special",
" "default link SpecialComment Special",
" "default link Debug Special",
" "default link Ignore Normal",
" Syntax Overrides
hi Structure guifg=#${colo.color4} gui=bold
hi StorageClass guifg=#${colo.color4} gui=bold
hi Number guifg=#${colo.foreground}
" -----
hi link Boolean Number
hi link Character String
hi link SpecialChar Character
" Syntax
hi Constant guifg=#${colo.foreground}
hi Operator guifg=#${colo.foreground}
hi PreProc guifg=#${colo.foreground}
hi Type guifg=#${colo.foreground} gui=bold
hi Delimiter guifg=#${colo.foreground}
hi Comment guifg=#${colo.color2}
hi String guifg=#${colo.color2}
hi Identifier guifg=#${colo.foreground}
hi Function guifg=#${colo.foreground}
hi Statement guifg=#${colo.foreground} gui=bold
hi Special guifg=#${colo.color6}
hi Error guifg=#${colo.color1} guibg=#${colo.foreground} " Used for Neogit delete.
hi Todo guifg=#${colo.foreground} gui=bold
" Diagnostic
hi DiagnosticError guifg=#${colo.color1}
hi DiagnosticWarn guifg=#${colo.color3}
hi DiagnosticInfo guifg=#${colo.color2}
hi DiagnosticHint guifg=#${colo.foreground}
hi DiagnosticOk guifg=#${colo.color4}
hi DiagnosticUnderlineError guisp=#${colo.color1} gui=underline
hi DiagnosticUnderlineWarn guisp=#${colo.color3} gui=underline
hi DiagnosticUnderlineInfo guisp=#${colo.color2} gui=underline
hi DiagnosticUnderlineHint guisp=#${colo.foreground} gui=underline
hi DiagnosticUnderlineOk guisp=#${colo.color4} gui=underline
hi DiagnosticDeprecated guisp=#${colo.color3} gui=strikethrough
'';
};
in {
environment.sessionVariables = {
EDITOR = "nvim";
};
home-manager.users.andrew = {
programs.neovim = let
s = config.local.starter;
in {
enable = true;
viAlias = true;
vimAlias = true;
extraConfig = ''
lua << EOF
-- Simpler mini.starter builtin actions.
local builtin_actions_edit = function()
return {
{ name = 'Edit new buffer', action = 'enew', section = 'Actions' },
{ name = 'Quit', action = 'qall', section = 'Actions' }
}
end
local starter = require('mini.starter')
starter.setup({
items = {
starter.sections.sessions(6, true),
starter.sections.recent_files(7, false, false),
builtin_actions_edit()
},
content_hooks = {
starter.gen_hook.adding_bullet(),
starter.gen_hook.aligning('center', 'center')
},
top_padding = ${toString s.top_padding},
header = '${s.header}',
footer = '${s.footer}',
footer_offset = ${toString s.footer-offset},
--picture = {
-- path = '${s.picture}',
-- kitty = os.getenv('TERM') == 'xterm-kitty',
-- width = ${toString s.width},
-- position = '${s.position}',
-- padding = {
-- top = ${toString s.padding.top},
-- left = ${toString s.padding.left},
-- text = ${toString s.padding.text}
-- }
--}
})
EOF
'' + builtins.readFile(../../files/nvim/init.vim);
extraPackages = with pkgs; [
fzf
chafa
ripgrep
xxd
];
#(pkgs.vimUtils.buildVimPlugin {
# pname = "";
# version = "";
# src = pkgs.fetchFromGitHub {
# owner = "";
# repo = "";
# rev = "";
# hash = "";
# };
# meta.homepage = "";
#})
withRuby = false;
withPython3 = false;
plugins = with pkgs.vimPlugins; [
local-nvim
wal
undotree
fzf-wrapper
fzf-vim
vim-gitbranch
vim-signify
nvim-lspconfig
inc-rename-nvim
mini-nvim
neogit
plenary-nvim
ccc-nvim
];
};
};
}
|