1{
2 lib,
3 stdenv,
4 # nixpkgs functions
5 buildGoModule,
6 buildVimPlugin,
7 callPackage,
8 fetchFromGitHub,
9 fetchpatch,
10 fetchurl,
11 neovimUtils,
12 replaceVars,
13 symlinkJoin,
14 # Language dependencies
15 fetchYarnDeps,
16 mkYarnModules,
17 python3,
18 # Misc dependencies
19 charm-freeze,
20 code-minimap,
21 dailies,
22 dasht,
23 deno,
24 direnv,
25 fzf,
26 gawk,
27 helm-ls,
28 himalaya,
29 htop,
30 jq,
31 khard,
32 languagetool,
33 libgit2,
34 llvmPackages,
35 meson,
36 neovim-unwrapped,
37 nim1,
38 nodejs,
39 notmuch,
40 openscad,
41 openssh,
42 parinfer-rust,
43 phpactor,
44 ranger,
45 ripgrep,
46 skim,
47 sqlite,
48 sshfs,
49 statix,
50 stylish-haskell,
51 tabnine,
52 taskwarrior2,
53 taskwarrior3,
54 tmux,
55 tup,
56 typescript,
57 typescript-language-server,
58 vim,
59 which,
60 xdg-utils,
61 xdotool,
62 xkb-switch,
63 xorg,
64 xxd,
65 ycmd,
66 zathura,
67 zenity,
68 zoxide,
69 zsh,
70 # codeium-nvim dependencies
71 codeium,
72 # command-t dependencies
73 getconf,
74 ruby,
75 # cornelis dependencies
76 cornelis,
77 # cpsm dependencies
78 boost,
79 cmake,
80 icu,
81 ncurses,
82 # devdocs-nvim dependencies
83 pandoc,
84 # nvim-tinygit
85 gitMinimal,
86 # Preview-nvim dependencies
87 md-tui,
88 # sved dependencies
89 glib,
90 gobject-introspection,
91 wrapGAppsHook3,
92 writeText,
93 curl,
94 # vim-agda dependencies
95 agda,
96 # vim-go dependencies
97 asmfmt,
98 delve,
99 errcheck,
100 go-motion,
101 go-tools,
102 gocode-gomod,
103 godef,
104 gogetdoc,
105 golangci-lint,
106 golint,
107 gomodifytags,
108 gopls,
109 gotags,
110 gotools,
111 iferr,
112 impl,
113 reftools,
114 revive,
115 # hurl dependencies
116 hurl,
117 # must be lua51Packages
118 luajitPackages,
119 aider-chat,
120 # typst-preview dependencies
121 tinymist,
122 websocat,
123 # lazydocker.nvim dependencies
124 lazydocker,
125 # lazyjj.nvim dependencies
126 lazyjj,
127 # luau-lsp-nvim dependencies
128 luau-lsp,
129 # uv.nvim dependencies
130 uv,
131 # nvim-vstsl dependencies
132 vtsls,
133 # search-and-replace.nvim dependencies
134 fd,
135 sad,
136 # ethersync vim plugin
137 ethersync,
138}:
139self: super:
140let
141 luaPackages = neovim-unwrapped.lua.pkgs;
142in
143{
144 corePlugins = symlinkJoin {
145 name = "core-vim-plugins";
146 paths = with self; [
147 # plugin managers
148 lazy-nvim
149 mini-deps
150 packer-nvim
151 vim-plug
152
153 # core dependencies
154 plenary-nvim
155
156 # popular plugins
157 mini-nvim
158 nvim-cmp
159 nvim-lspconfig
160 nvim-treesitter
161 vim-airline
162 vim-fugitive
163 vim-surround
164 ];
165
166 meta = {
167 description = "Collection of popular vim plugins (for internal testing purposes)";
168 };
169 };
170
171 #######################
172 # Regular overrides
173
174 advanced-git-search-nvim = super.advanced-git-search-nvim.overrideAttrs {
175 checkInputs = with self; [
176 snacks-nvim
177 ];
178 dependencies = with self; [
179 telescope-nvim
180 vim-fugitive
181 vim-rhubarb
182 fzf-lua
183 plenary-nvim
184 ];
185 };
186
187 aerial-nvim = super.aerial-nvim.overrideAttrs {
188 # optional dependencies
189 checkInputs = with self; [
190 lualine-nvim
191 telescope-nvim
192 ];
193 };
194
195 agitator-nvim = super.agitator-nvim.overrideAttrs {
196 dependencies = with self; [
197 telescope-nvim
198 plenary-nvim
199 ];
200 };
201
202 aider-nvim = super.aider-nvim.overrideAttrs {
203 patches = [
204 (replaceVars ./patches/aider-nvim/bin.patch { aider = lib.getExe' aider-chat "aider"; })
205 ];
206 };
207
208 animation-nvim = super.animation-nvim.overrideAttrs {
209 dependencies = [ self.middleclass ];
210 };
211
212 arshlib-nvim = super.arshlib-nvim.overrideAttrs {
213 dependencies = with self; [
214 nui-nvim
215 plenary-nvim
216 ];
217 };
218
219 astrocore = super.astrocore.overrideAttrs {
220 dependencies = [ self.lazy-nvim ];
221 };
222
223 astroui = super.astroui.overrideAttrs {
224 # Readme states that astrocore is an optional dependency
225 checkInputs = [ self.astrocore ];
226 };
227
228 asyncrun-vim = super.asyncrun-vim.overrideAttrs {
229 # Optional toggleterm integration
230 checkInputs = [ self.toggleterm-nvim ];
231 };
232
233 autosave-nvim = super.autosave-nvim.overrideAttrs {
234 dependencies = [ self.plenary-nvim ];
235 };
236
237 auto-session = super.auto-session.overrideAttrs {
238 # Optional integration
239 checkInputs = [ self.telescope-nvim ];
240 };
241
242 aw-watcher-vim = super.aw-watcher-vim.overrideAttrs {
243 patches = [
244 (replaceVars ./patches/aw-watcher-vim/program_paths.patch {
245 curl = lib.getExe curl;
246 })
247 ];
248 };
249
250 bamboo-nvim = super.bamboo-nvim.overrideAttrs {
251 # Optional integration
252 checkInputs = with self; [
253 barbecue-nvim
254 lualine-nvim
255 ];
256 nvimSkipModules = [
257 # Requires config table
258 "bamboo.colors"
259 "bamboo.terminal"
260 "bamboo.highlights"
261 "bamboo-light"
262 "bamboo-vulgaris"
263 "bamboo-multiplex"
264 "barbecue.theme.bamboo"
265 ];
266 };
267
268 barbar-nvim = super.barbar-nvim.overrideAttrs {
269 # Optional integrations
270 checkInputs = with self; [
271 bufferline-nvim
272 nvim-web-devicons
273 ];
274 # E5108: Error executing lua ...implugin-barbar.nvim-2025-04-28/lua/bufferline/utils.lua:10: module 'barbar.utils.hl' not found:
275 nvimSkipModules = [ "bufferline.utils" ];
276 };
277
278 barbecue-nvim = super.barbecue-nvim.overrideAttrs {
279 dependencies = with self; [
280 nvim-lspconfig
281 nvim-navic
282 ];
283 meta = {
284 description = "VS Code like winbar for Neovim";
285 homepage = "https://github.com/utilyre/barbecue.nvim";
286 license = lib.licenses.mit;
287 maintainers = with lib.maintainers; [ lightquantum ];
288 };
289 };
290
291 base46 = super.base46.overrideAttrs {
292 dependencies = [ self.nvchad-ui ];
293 # Requires global config setup
294 nvimSkipModules = [
295 "nvchad.configs.cmp"
296 "nvchad.configs.gitsigns"
297 "nvchad.configs.luasnip"
298 "nvchad.configs.mason"
299 "nvchad.configs.nvimtree"
300 "nvchad.configs.telescope"
301 ];
302 };
303
304 blink-cmp-copilot = super.blink-cmp-copilot.overrideAttrs {
305 dependencies = [ self.copilot-lua ];
306 };
307
308 blink-cmp-dictionary = super.blink-cmp-dictionary.overrideAttrs {
309 dependencies = [ self.plenary-nvim ];
310 };
311
312 blink-cmp-git = super.blink-cmp-git.overrideAttrs {
313 dependencies = [ self.plenary-nvim ];
314 };
315
316 blink-cmp-npm-nvim = super.blink-cmp-npm-nvim.overrideAttrs {
317 nvimSkipModules = [
318 # Test files
319 "blink-cmp-npm.utils.compute_meta_spec"
320 "blink-cmp-npm.utils.generate_doc_spec"
321 "blink-cmp-npm.utils.ignore_version_spec"
322 "blink-cmp-npm.utils.is_cursor_in_dependencies_node_spec"
323 "blink-cmp-npm.utils.semantic_sort_spec"
324 "minit"
325 ];
326 };
327
328 blink-emoji-nvim = super.blink-emoji-nvim.overrideAttrs {
329 dependencies = [ self.blink-cmp ];
330 };
331
332 blink-nerdfont-nvim = super.blink-nerdfont-nvim.overrideAttrs {
333 dependencies = [ self.blink-cmp ];
334 };
335
336 blink-cmp-words = super.blink-cmp-words.overrideAttrs {
337 dependencies = [ self.blink-cmp ];
338 };
339
340 bluloco-nvim = super.bluloco-nvim.overrideAttrs {
341 dependencies = [ self.lush-nvim ];
342 };
343
344 bufferline-nvim = super.bufferline-nvim.overrideAttrs {
345 # depends on bufferline.lua being loaded first
346 nvimSkipModules = [ "bufferline.commands" ];
347 };
348
349 bufresize-nvim = super.bufresize-nvim.overrideAttrs {
350 meta.license = lib.licenses.mit;
351 };
352
353 catppuccin-nvim = super.catppuccin-nvim.overrideAttrs {
354 nvimSkipModules = [
355 "catppuccin.groups.integrations.noice"
356 "catppuccin.groups.integrations.feline"
357 "catppuccin.lib.vim.init"
358 ];
359 };
360
361 ccc-nvim = super.ccc-nvim.overrideAttrs {
362 # ccc auto-discover requires all pass
363 # but there's a bootstrap module that hangs forever if we dont stop on first success
364 nvimSkipModules = [ "ccc.kit.Thread.Server._bootstrap" ];
365 };
366
367 chadtree = super.chadtree.overrideAttrs {
368 buildInputs = [
369 python3
370 ];
371 passthru.python3Dependencies =
372 ps: with ps; [
373 pynvim-pp
374 pyyaml
375 std2
376 ];
377 # We need some patches so it stops complaining about not being in a venv
378 patches = [ ./patches/chadtree/emulate-venv.patch ];
379 };
380
381 ChatGPT-nvim = super.ChatGPT-nvim.overrideAttrs {
382 dependencies = with self; [
383 nui-nvim
384 plenary-nvim
385 telescope-nvim
386 ];
387 };
388
389 cheatsheet-nvim = super.cheatsheet-nvim.overrideAttrs {
390 dependencies = with self; [
391 telescope-nvim
392 plenary-nvim
393 ];
394 };
395
396 clang_complete = super.clang_complete.overrideAttrs {
397 # In addition to the arguments you pass to your compiler, you also need to
398 # specify the path of the C++ std header (if you are using C++).
399 # These usually implicitly set by cc-wrapper around clang (pkgs/build-support/cc-wrapper).
400 # The linked ruby code shows generates the required '.clang_complete' for cmake based projects
401 # https://gist.github.com/Mic92/135e83803ed29162817fce4098dec144
402 preFixup = ''
403 substituteInPlace "$out"/plugin/clang_complete.vim \
404 --replace-fail "let g:clang_library_path = ''
405 + "''"
406 + ''
407 " "let g:clang_library_path='${lib.getLib llvmPackages.libclang}/lib/libclang.so'"
408
409 substituteInPlace "$out"/plugin/libclang.py \
410 --replace-fail "/usr/lib/clang" "${llvmPackages.clang.cc}/lib/clang"
411 '';
412 };
413
414 claude-code-nvim = super.claude-code-nvim.overrideAttrs {
415 dependencies = with self; [
416 plenary-nvim
417 ];
418 };
419
420 clighter8 = super.clighter8.overrideAttrs {
421 preFixup = ''
422 sed "/^let g:clighter8_libclang_path/s|')$|${lib.getLib llvmPackages.clang.cc}/lib/libclang.so')|" \
423 -i "$out"/plugin/clighter8.vim
424 '';
425 };
426
427 clipboard-image-nvim = super.clipboard-image-nvim.overrideAttrs {
428 postPatch = ''
429 sed -i -e 's/require "health"/vim.health/' lua/clipboard-image/health.lua
430 '';
431 };
432
433 cmake-tools-nvim = super.cmake-tools-nvim.overrideAttrs {
434 dependencies = [ self.plenary-nvim ];
435 };
436
437 cmd-parser-nvim = super.cmd-parser-nvim.overrideAttrs {
438 # Has cmd-parser.init.test matched from lua/cmd-parser/init.test.lua
439 # Can't be required and is only other module
440 nvimRequireCheck = "cmd-parser";
441 };
442
443 cmp-ai = super.cmp-ai.overrideAttrs {
444 # We dont want to bundle nvim-cmp anymore since blink.nvim can use these sources.
445 # Add to check inputs though to validate plugin
446 checkInputs = [ self.nvim-cmp ];
447 dependencies = with self; [
448 plenary-nvim
449 ];
450 };
451
452 cmp-beancount = super.cmp-beancount.overrideAttrs {
453 checkInputs = [ self.nvim-cmp ];
454 };
455
456 cmp-clippy = super.cmp-clippy.overrideAttrs {
457 checkInputs = [ self.nvim-cmp ];
458 dependencies = with self; [
459 plenary-nvim
460 ];
461 };
462
463 cmp-cmdline = super.cmp-cmdline.overrideAttrs {
464 checkInputs = [ self.nvim-cmp ];
465 };
466
467 cmp-conjure = super.cmp-conjure.overrideAttrs {
468 checkInputs = [ self.nvim-cmp ];
469 dependencies = [ self.conjure ];
470 };
471
472 cmp-copilot = super.cmp-copilot.overrideAttrs {
473 checkInputs = [ self.nvim-cmp ];
474 dependencies = [ self.copilot-vim ];
475 };
476
477 cmp-ctags = super.cmp-ctags.overrideAttrs {
478 checkInputs = [ self.nvim-cmp ];
479 };
480
481 cmp-dap = super.cmp-dap.overrideAttrs {
482 checkInputs = [ self.nvim-cmp ];
483 dependencies = [ self.nvim-dap ];
484 };
485
486 cmp-dictionary = super.cmp-dictionary.overrideAttrs {
487 checkInputs = [ self.nvim-cmp ];
488 nvimSkipModules = [
489 # Test files
490 "cmp_dictionary.dict.external_spec"
491 "cmp_dictionary.dict.trie_spec"
492 "cmp_dictionary.lib.trie_spec"
493 "cmp_dictionary.lib.unknown_spec"
494 ];
495 };
496
497 cmp-digraphs = super.cmp-digraphs.overrideAttrs {
498 checkInputs = [ self.nvim-cmp ];
499 };
500
501 cmp-fish = super.cmp-fish.overrideAttrs {
502 checkInputs = [ self.nvim-cmp ];
503 };
504
505 cmp-fuzzy-buffer = super.cmp-fuzzy-buffer.overrideAttrs {
506 checkInputs = [ self.nvim-cmp ];
507 dependencies = [ self.fuzzy-nvim ];
508 };
509
510 cmp-fuzzy-path = super.cmp-fuzzy-path.overrideAttrs {
511 checkInputs = [ self.nvim-cmp ];
512 dependencies = [ self.fuzzy-nvim ];
513 };
514
515 cmp-git = super.cmp-git.overrideAttrs {
516 checkInputs = [ self.nvim-cmp ];
517 dependencies = with self; [ plenary-nvim ];
518 };
519
520 cmp-greek = super.cmp-greek.overrideAttrs {
521 checkInputs = [ self.nvim-cmp ];
522 };
523
524 cmp-look = super.cmp-look.overrideAttrs {
525 checkInputs = [ self.nvim-cmp ];
526 };
527
528 cmp_luasnip = super.cmp_luasnip.overrideAttrs {
529 checkInputs = [ self.nvim-cmp ];
530 dependencies = [ self.luasnip ];
531 };
532
533 cmp-neosnippet = super.cmp-neosnippet.overrideAttrs {
534 checkInputs = [ self.nvim-cmp ];
535 dependencies = [ self.neosnippet-vim ];
536 };
537
538 cmp-nixpkgs-maintainers = super.cmp-nixpkgs-maintainers.overrideAttrs {
539 checkInputs = [ self.nvim-cmp ];
540 };
541
542 cmp-npm = super.cmp-npm.overrideAttrs {
543 checkInputs = [ self.nvim-cmp ];
544 dependencies = [ self.plenary-nvim ];
545 };
546
547 cmp-nvim-lsp-signature-help = super.cmp-nvim-lsp-signature-help.overrideAttrs {
548 checkInputs = [ self.nvim-cmp ];
549 };
550
551 cmp-nvim-lua = super.cmp-nvim-lua.overrideAttrs {
552 checkInputs = [ self.nvim-cmp ];
553 };
554
555 cmp-nvim-tags = super.cmp-nvim-tags.overrideAttrs {
556 checkInputs = [ self.nvim-cmp ];
557 };
558
559 cmp-nvim-ultisnips = super.cmp-nvim-ultisnips.overrideAttrs {
560 checkInputs = [ self.nvim-cmp ];
561 };
562
563 cmp-pandoc-nvim = super.cmp-pandoc-nvim.overrideAttrs {
564 checkInputs = [ self.nvim-cmp ];
565 dependencies = [ self.plenary-nvim ];
566 };
567
568 cmp-pandoc-references = super.cmp-pandoc-references.overrideAttrs {
569 checkInputs = [ self.nvim-cmp ];
570 };
571
572 cmp-path = super.cmp-path.overrideAttrs {
573 checkInputs = [ self.nvim-cmp ];
574 };
575
576 cmp-rg = super.cmp-rg.overrideAttrs {
577 checkInputs = [ self.nvim-cmp ];
578 };
579
580 cmp-snippy = super.cmp-snippy.overrideAttrs {
581 checkInputs = [ self.nvim-cmp ];
582 dependencies = [ self.nvim-snippy ];
583 };
584
585 cmp-tabby = super.cmp-tabby.overrideAttrs {
586 checkInputs = [ self.nvim-cmp ];
587 };
588
589 cmp-tabnine = super.cmp-tabnine.overrideAttrs {
590 checkInputs = [ self.nvim-cmp ];
591 buildInputs = [ tabnine ];
592
593 postFixup = ''
594 mkdir -p $target/binaries/${tabnine.version}
595 ln -s ${tabnine}/bin/ $target/binaries/${tabnine.version}/${tabnine.passthru.platform}
596 '';
597 };
598
599 cmp-tmux = super.cmp-tmux.overrideAttrs {
600 checkInputs = [ self.nvim-cmp ];
601 dependencies = [ tmux ];
602 };
603
604 cmp-vim-lsp = super.cmp-vim-lsp.overrideAttrs {
605 checkInputs = [ self.nvim-cmp ];
606 dependencies = [ self.vim-lsp ];
607 };
608
609 cmp-vimtex = super.cmp-vimtex.overrideAttrs {
610 checkInputs = [ self.nvim-cmp ];
611 };
612
613 cmp-vimwiki-tags = super.cmp-vimwiki-tags.overrideAttrs {
614 checkInputs = [ self.nvim-cmp ];
615 dependencies = [ self.vimwiki ];
616 };
617
618 cmp-vsnip = super.cmp-vsnip.overrideAttrs {
619 checkInputs = [ self.nvim-cmp ];
620 };
621
622 cmp-zsh = super.cmp-zsh.overrideAttrs {
623 checkInputs = [ self.nvim-cmp ];
624 dependencies = [ zsh ];
625 };
626
627 cobalt2-nvim = super.cobalt2-nvim.overrideAttrs {
628 dependencies = with self; [ colorbuddy-nvim ];
629 # Few broken themes
630 nvimSkipModules = [
631 "cobalt2.plugins.init"
632 "cobalt2.plugins.trouble"
633 "cobalt2.plugins.gitsigns"
634 "cobalt2.plugins.package-info"
635 "cobalt2.plugins.indent-blankline"
636 "cobalt2.plugins.marks"
637 "cobalt2.theme"
638 ];
639 };
640
641 codecompanion-nvim = super.codecompanion-nvim.overrideAttrs {
642 checkInputs = with self; [
643 # Optional completion
644 blink-cmp
645 nvim-cmp
646 # Optional pickers
647 fzf-lua
648 mini-nvim
649 snacks-nvim
650 telescope-nvim
651 ];
652 dependencies = [ self.plenary-nvim ];
653 nvimSkipModules = [
654 # Requires setup call
655 "codecompanion.actions.static"
656 "codecompanion.actions.init"
657 # Test
658 "minimal"
659 ];
660 };
661
662 codecompanion-history-nvim = super.codecompanion-history-nvim.overrideAttrs {
663 dependencies = with self; [
664 # transitive dependency for codecompanion-nvim
665 plenary-nvim
666
667 codecompanion-nvim
668 ];
669 };
670
671 windsurf-nvim =
672 let
673 # Update according to https://github.com/Exafunction/codeium.nvim/blob/main/lua/codeium/versions.json
674 codeiumVersion = "1.20.9";
675 codeiumHashes = {
676 x86_64-linux = "sha256-IeNK7UQtOhqC/eQv7MAya4jB1WIGykSR7IgutZatmHM=";
677 aarch64-linux = "sha256-ujTFki/3V79El2WCkG0PJhbaMT0knC9mrS9E7Uv9HD4=";
678 x86_64-darwin = "sha256-r2KloEQsUku9sk8h76kwyQuMTHcq/vwfTSK2dkiXDzE=";
679 aarch64-darwin = "sha256-1jNH0Up8mAahDgvPF6g42LV+RVDVsPqDM54lE2KYY48=";
680 };
681
682 codeium' = codeium.overrideAttrs rec {
683 version = codeiumVersion;
684
685 src =
686 let
687 inherit (stdenv.hostPlatform) system;
688 throwSystem = throw "Unsupported system: ${system}";
689
690 platform =
691 {
692 x86_64-linux = "linux_x64";
693 aarch64-linux = "linux_arm";
694 x86_64-darwin = "macos_x64";
695 aarch64-darwin = "macos_arm";
696 }
697 .${system} or throwSystem;
698
699 hash = codeiumHashes.${system} or throwSystem;
700 in
701 fetchurl {
702 name = "codeium-${version}.gz";
703 url = "https://github.com/Exafunction/codeium/releases/download/language-server-v${version}/language_server_${platform}.gz";
704 inherit hash;
705 };
706 };
707
708 in
709 super.windsurf-nvim.overrideAttrs {
710 dependencies = [ self.plenary-nvim ];
711 buildPhase = ''
712 cat << EOF > lua/codeium/installation_defaults.lua
713 return {
714 tools = {
715 language_server = "${codeium'}/bin/codeium_language_server"
716 };
717 };
718 EOF
719 '';
720
721 doCheck = true;
722 checkInputs = [
723 jq
724 codeium'
725 ];
726 checkPhase = ''
727 runHook preCheck
728
729 expected_codeium_version=$(jq -r '.version' lua/codeium/versions.json)
730 actual_codeium_version=$(codeium_language_server --version)
731
732 expected_codeium_stamp=$(jq -r '.stamp' lua/codeium/versions.json)
733 actual_codeium_stamp=$(codeium_language_server --stamp | grep STABLE_BUILD_SCM_REVISION | cut -d' ' -f2)
734
735 if [ "$actual_codeium_stamp" != "$expected_codeium_stamp" ]; then
736 echo "
737 The version of codeium patched in vimPlugins.codeium-nvim is incorrect.
738 Expected stamp: $expected_codeium_stamp
739 Actual stamp: $actual_codeium_stamp
740
741 Expected codeium version: $expected_codeium_version
742 Actual codeium version: $actual_codeium_version
743
744 Please, update 'codeiumVersion' in pkgs/applications/editors/vim/plugins/overrides.nix accordingly to:
745 https://github.com/Exafunction/codeium.nvim/blob/main/lua/codeium/versions.json
746 "
747 exit 1
748 fi
749
750 runHook postCheck
751 '';
752 };
753
754 codewindow-nvim = super.codewindow-nvim.overrideAttrs {
755 dependencies = [ self.nvim-treesitter ];
756 };
757
758 colorful-menu-nvim = super.colorful-menu-nvim.overrideAttrs {
759 # Local bug reproduction modules
760 nvimSkipModules = [
761 "repro_blink"
762 "repro_cmp"
763 ];
764 };
765
766 command-t = super.command-t.overrideAttrs {
767 nativeBuildInputs = [
768 getconf
769 ];
770 buildPhase = ''
771 substituteInPlace lua/wincent/commandt/lib/Makefile \
772 --replace-fail '/bin/bash' 'bash' \
773 --replace-fail xcrun ""
774 make build
775 '';
776 };
777
778 competitest-nvim = super.competitest-nvim.overrideAttrs {
779 dependencies = [ self.nui-nvim ];
780 };
781
782 compiler-explorer-nvim = super.compiler-explorer-nvim.overrideAttrs {
783 dependencies = [ self.plenary-nvim ];
784 };
785
786 compiler-nvim = super.compiler-nvim.overrideAttrs {
787 dependencies = [ self.overseer-nvim ];
788 };
789
790 completion-buffers = super.completion-buffers.overrideAttrs {
791 dependencies = [ self.completion-nvim ];
792 };
793
794 completion-tabnine = super.completion-tabnine.overrideAttrs {
795 dependencies = [ self.completion-nvim ];
796 buildInputs = [ tabnine ];
797 postFixup = ''
798 mkdir -p $target/binaries
799 ln -s ${tabnine}/bin/TabNine $target/binaries/TabNine_$(uname -s)
800 '';
801 };
802
803 completion-treesitter = super.completion-treesitter.overrideAttrs {
804 dependencies = with self; [
805 completion-nvim
806 nvim-treesitter
807 ];
808 };
809
810 conjure = super.conjure.overrideAttrs {
811 dependencies = [ self.plenary-nvim ];
812 nvimSkipModules = [
813 # Test mismatch of directory because of nix generated path
814 "conjure-spec.client.fennel.nfnl_spec"
815 ];
816 };
817
818 context-vim = super.context-vim.overrideAttrs {
819 # Vim plugin with optional lua highlight module
820 nvimSkipModules = [ "context.highlight" ];
821 };
822
823 CopilotChat-nvim = super.CopilotChat-nvim.overrideAttrs {
824 checkInputs = with self; [
825 # Optional integrations
826 fzf-lua
827 telescope-nvim
828 snacks-nvim
829 ];
830 dependencies = with self; [
831 copilot-lua
832 plenary-nvim
833 ];
834 };
835
836 copilot-cmp = super.copilot-cmp.overrideAttrs {
837 dependencies = [ self.copilot-lua ];
838 };
839
840 copilot-lualine = super.copilot-lualine.overrideAttrs {
841 dependencies = with self; [
842 copilot-lua
843 lualine-nvim
844 ];
845 doInstallCheck = true;
846 };
847
848 copilot-vim = super.copilot-vim.overrideAttrs (old: {
849 postInstall = ''
850 substituteInPlace $out/autoload/copilot/client.vim \
851 --replace-fail " let node = get(g:, 'copilot_node_command', ''\'''\')" \
852 " let node = get(g:, 'copilot_node_command', '${nodejs}/bin/node')"
853 '';
854
855 meta = old.meta // {
856 license = lib.licenses.unfree;
857 };
858 });
859
860 coq_nvim = super.coq_nvim.overrideAttrs {
861 passthru.python3Dependencies =
862 ps: with ps; [
863 pynvim-pp
864 pyyaml
865 std2
866 ];
867
868 # We need some patches so it stops complaining about not being in a venv
869 patches = [ ./patches/coq_nvim/emulate-venv.patch ];
870
871 nvimRequireCheck = [
872 # Other modules require global variables
873 "coq"
874 ];
875 };
876
877 cornelis = super.cornelis.overrideAttrs {
878 dependencies = [ self.vim-textobj-user ];
879 opt = [ self.vim-which-key ];
880 # Unconditionally use the cornelis binary provided by the top-level package:
881 patches = [ ./patches/cornelis/0001-Unconditionally-use-global-binary.patch ];
882 postInstall = ''
883 substituteInPlace $out/ftplugin/agda.vim \
884 --subst-var-by CORNELIS "${lib.getBin cornelis}/bin/cornelis"
885 '';
886 };
887
888 cpsm = super.cpsm.overrideAttrs {
889 nativeBuildInputs = [ cmake ];
890 buildInputs = [
891 python3
892 boost
893 icu
894 ncurses
895 ];
896 buildPhase = ''
897 patchShebangs .
898 export PY3=ON
899 ./install.sh
900 '';
901 };
902
903 crates-nvim = super.crates-nvim.overrideAttrs {
904 checkInputs = [
905 # Optional null-ls integration
906 self.none-ls-nvim
907 ];
908 dependencies = [ self.plenary-nvim ];
909 };
910
911 cspell-nvim = super.cspell-nvim.overrideAttrs {
912 dependencies = with self; [
913 none-ls-nvim
914 plenary-nvim
915 ];
916 };
917
918 ctrlp-cmatcher = super.ctrlp-cmatcher.overrideAttrs {
919 # drop Python 2 patches
920 # https://github.com/JazzCore/ctrlp-cmatcher/pull/44
921 patches = [
922 (fetchpatch {
923 name = "drop_python2_pt1.patch";
924 url = "https://github.com/JazzCore/ctrlp-cmatcher/commit/3abad6ea155a7f6e138e1de3ac5428177bfb0254.patch";
925 sha256 = "sha256-fn2puqYeJdPTdlTT4JjwVz7b3A+Xcuj/xtP6TETlB1U=";
926 })
927 (fetchpatch {
928 name = "drop_python2_pt2.patch";
929 url = "https://github.com/JazzCore/ctrlp-cmatcher/commit/385c8d02398dbb328b1a943a94e7109fe6473a08.patch";
930 sha256 = "sha256-yXKCq8sqO0Db/sZREuSeqKwKO71cmTsAvWftoOQehZo=";
931 })
932 ];
933 buildInputs = with python3.pkgs; [
934 python3
935 setuptools
936 ];
937 buildPhase = ''
938 patchShebangs .
939 ./install.sh
940 '';
941 };
942
943 dailies-nvim = super.dailies-nvim.overrideAttrs {
944 runtimeDeps = [
945 dailies
946 ];
947 };
948
949 darkearth-nvim = super.darkearth-nvim.overrideAttrs {
950 dependencies = [ self.lush-nvim ];
951 # Lua module used to build theme
952 nvimSkipModules = [ "shipwright_build" ];
953 };
954
955 ddc-filter-matcher_head = super.ddc-filter-matcher_head.overrideAttrs {
956 dependencies = [ self.ddc-vim ];
957 };
958
959 ddc-filter-sorter_rank = super.ddc-filter-sorter_rank.overrideAttrs {
960 dependencies = [ self.ddc-vim ];
961 };
962
963 ddc-fuzzy = super.ddc-fuzzy.overrideAttrs {
964 dependencies = [ self.ddc-vim ];
965 };
966
967 ddc-source-around = super.ddc-source-around.overrideAttrs {
968 dependencies = [ self.ddc-vim ];
969 };
970
971 ddc-source-file = super.ddc-source-file.overrideAttrs {
972 dependencies = [ self.ddc-vim ];
973 };
974
975 ddc-source-lsp = super.ddc-source-lsp.overrideAttrs {
976 dependencies = [ self.ddc-vim ];
977 };
978
979 ddc-ui-pum = super.ddc-ui-pum.overrideAttrs {
980 dependencies = with self; [
981 ddc-vim
982 pum-vim
983 ];
984 };
985
986 ddc-ui-native = super.ddc-ui-native.overrideAttrs {
987 dependencies = [ self.ddc-vim ];
988 };
989
990 ddc-vim = super.ddc-vim.overrideAttrs {
991 dependencies = [ self.denops-vim ];
992 };
993
994 debugmaster-nvim = super.debugmaster-nvim.overrideAttrs {
995 dependencies = [ self.nvim-dap ];
996 };
997
998 defx-nvim = super.defx-nvim.overrideAttrs {
999 dependencies = [ self.nvim-yarp ];
1000 };
1001
1002 denops-vim = super.denops-vim.overrideAttrs {
1003 postPatch = ''
1004 # Use Nix's Deno instead of an arbitrary install
1005 substituteInPlace ./autoload/denops.vim --replace-fail "call denops#_internal#conf#define('denops#deno', 'deno')" "call denops#_internal#conf#define('denops#deno', '${deno}/bin/deno')"
1006 '';
1007 };
1008
1009 deoplete-fish = super.deoplete-fish.overrideAttrs {
1010 dependencies = with self; [
1011 deoplete-nvim
1012 vim-fish
1013 ];
1014 };
1015
1016 deoplete-go = super.deoplete-go.overrideAttrs {
1017 nativeBuildInputs = [ (python3.withPackages (ps: with ps; [ setuptools ])) ];
1018 buildPhase = ''
1019 pushd ./rplugin/python3/deoplete/ujson
1020 python3 setup.py build --build-base=$PWD/build --build-lib=$PWD/build
1021 popd
1022 find ./rplugin/ -name "ujson*.so" -exec mv -v {} ./rplugin/python3/ \;
1023 '';
1024 };
1025
1026 deoplete-khard = super.deoplete-khard.overrideAttrs {
1027 dependencies = [ self.deoplete-nvim ];
1028 passthru.python3Dependencies = ps: [ (ps.toPythonModule khard) ];
1029 meta = {
1030 description = "Address-completion for khard via deoplete";
1031 homepage = "https://github.com/nicoe/deoplete-khard";
1032 license = lib.licenses.mit;
1033 maintainers = with lib.maintainers; [ jorsn ];
1034 };
1035 };
1036
1037 devdocs-nvim = super.devdocs-nvim.overrideAttrs {
1038 nvimSkipModules = [
1039 # Error initializing Devdocs state
1040 "devdocs.state"
1041 ];
1042 runtimeDeps = [
1043 curl
1044 jq
1045 pandoc
1046 ];
1047 };
1048
1049 diagram-nvim = super.diagram-nvim.overrideAttrs {
1050 dependencies = [ self.image-nvim ];
1051 };
1052
1053 diffview-nvim = super.diffview-nvim.overrideAttrs {
1054 dependencies = [ self.plenary-nvim ];
1055
1056 nvimSkipModules = [
1057 # https://github.com/sindrets/diffview.nvim/issues/498
1058 "diffview.api.views.diff.diff_view"
1059 "diffview.scene.layouts.diff_2"
1060 "diffview.scene.layouts.diff_2_hor"
1061 "diffview.scene.layouts.diff_2_ver"
1062 "diffview.scene.layouts.diff_3"
1063 "diffview.scene.layouts.diff_3_hor"
1064 "diffview.scene.layouts.diff_3_mixed"
1065 "diffview.scene.layouts.diff_3_ver"
1066 "diffview.scene.layouts.diff_4"
1067 "diffview.scene.layouts.diff_4_mixed"
1068 "diffview.scene.views.diff.diff_view"
1069 "diffview.scene.views.file_history.file_history_panel"
1070 "diffview.scene.views.file_history.option_panel"
1071 "diffview.scene.window"
1072 "diffview.ui.panels.commit_log_panel"
1073 "diffview.ui.panels.help_panel"
1074 "diffview.ui.panel"
1075 "diffview.vcs.adapters.git.init"
1076 "diffview.vcs.adapters.hg.init"
1077 "diffview.vcs.adapter"
1078 "diffview.vcs.init"
1079 "diffview.vcs.utils"
1080 "diffview.job"
1081 "diffview.lib"
1082 "diffview.multi_job"
1083 ];
1084
1085 doInstallCheck = true;
1086 };
1087
1088 direnv-vim = super.direnv-vim.overrideAttrs (old: {
1089 preFixup = old.preFixup or "" + ''
1090 substituteInPlace $out/autoload/direnv.vim \
1091 --replace-fail "let s:direnv_cmd = get(g:, 'direnv_cmd', 'direnv')" \
1092 "let s:direnv_cmd = get(g:, 'direnv_cmd', '${lib.getBin direnv}/bin/direnv')"
1093 '';
1094 });
1095
1096 dotnet-nvim = super.dotnet-nvim.overrideAttrs {
1097 dependencies = with self; [
1098 telescope-nvim
1099 plenary-nvim
1100 ];
1101 };
1102
1103 dropbar-nvim = super.dropbar-nvim.overrideAttrs {
1104 # Requires global config table
1105 nvimSkipModules = [ "dropbar.menu" ];
1106 };
1107
1108 easy-dotnet-nvim = super.easy-dotnet-nvim.overrideAttrs {
1109 dependencies = with self; [
1110 plenary-nvim
1111 telescope-nvim
1112 ];
1113 checkInputs = with self; [
1114 # Pickers, can use telescope or fzf-lua
1115 fzf-lua
1116 ];
1117 };
1118
1119 ecolog-nvim = super.ecolog-nvim.overrideAttrs {
1120 nvimSkipModules = [
1121 "repro"
1122 ];
1123 };
1124
1125 efmls-configs-nvim = super.efmls-configs-nvim.overrideAttrs {
1126 dependencies = [ self.nvim-lspconfig ];
1127 };
1128
1129 elixir-tools-nvim = super.elixir-tools-nvim.overrideAttrs {
1130 dependencies = [ self.plenary-nvim ];
1131 fixupPhase = ''
1132 patchShebangs $(find $out/bin/ -type f -not -name credo-language-server)
1133 '';
1134 };
1135
1136 ethersync = buildVimPlugin rec {
1137 inherit (ethersync)
1138 pname
1139 version
1140 src
1141 meta
1142 ;
1143
1144 sourceRoot = "${src.name}/nvim-plugin";
1145 };
1146
1147 executor-nvim = super.executor-nvim.overrideAttrs {
1148 dependencies = [ self.nui-nvim ];
1149 };
1150
1151 faust-nvim = super.faust-nvim.overrideAttrs {
1152 dependencies = with self; [
1153 luasnip
1154 nvim-fzf
1155 ];
1156 nvimSkipModules = [
1157 # E5108: Error executing lua vim/_init_packages.lua:0: ...in-faust-nvim-2022-06-01/lua/faust-nvim/autosnippets.lua:3: '=' expected near 'wd'
1158 "faust-nvim.autosnippets"
1159 ];
1160 };
1161
1162 fcitx-vim = super.fcitx-vim.overrideAttrs {
1163 passthru.python3Dependencies = ps: with ps; [ dbus-python ];
1164 meta = {
1165 description = "Keep and restore fcitx state when leaving/re-entering insert mode or search mode";
1166 license = lib.licenses.mit;
1167 };
1168 };
1169
1170 flash-nvim = super.flash-nvim.overrideAttrs {
1171 # Docs require lazyvim
1172 # dependencies = with self; [ lazy-nvim ];
1173 nvimSkipModules = [ "flash.docs" ];
1174 };
1175
1176 flit-nvim = super.flit-nvim.overrideAttrs {
1177 dependencies = [ self.leap-nvim ];
1178 };
1179
1180 flutter-tools-nvim = super.flutter-tools-nvim.overrideAttrs {
1181 # Optional dap integration
1182 checkInputs = [ self.nvim-dap ];
1183 dependencies = [ self.plenary-nvim ];
1184 };
1185
1186 follow-md-links-nvim = super.follow-md-links-nvim.overrideAttrs {
1187 dependencies = [ self.nvim-treesitter ];
1188 };
1189
1190 forms = super.forms.overrideAttrs {
1191 dependencies = [ self.self ];
1192 };
1193
1194 freeze-nvim = super.freeze-nvim.overrideAttrs {
1195 runtimeDeps = [ charm-freeze ];
1196 };
1197
1198 fruzzy =
1199 let
1200 # until https://github.com/NixOS/nixpkgs/pull/67878 is merged, there's no better way to install nim libraries with nix
1201 nimpy = fetchFromGitHub {
1202 owner = "yglukhov";
1203 repo = "nimpy";
1204 rev = "4840d1e438985af759ddf0923e7a9250fd8ea0da";
1205 sha256 = "0qqklvaajjqnlqm3rkk36pwwnn7x942mbca7nf2cvryh36yg4q5k";
1206 };
1207 binaryheap = fetchFromGitHub {
1208 owner = "bluenote10";
1209 repo = "nim-heap";
1210 rev = "c38039309cb11391112571aa332df9c55f625b54";
1211 sha256 = "05xdy13vm5n8dw2i366ppbznc4cfhq23rdcklisbaklz2jhdx352";
1212 };
1213 in
1214 super.fruzzy.overrideAttrs (old: {
1215 buildInputs = [ nim1 ];
1216 patches = [
1217 (replaceVars ./patches/fruzzy/get_version.patch {
1218 inherit (old) version;
1219 })
1220 ];
1221 configurePhase = ''
1222 substituteInPlace Makefile \
1223 --replace-fail \
1224 "nim c" \
1225 "nim c --nimcache:$TMP --path:${nimpy} --path:${binaryheap}"
1226 '';
1227 buildPhase = ''
1228 make build
1229 '';
1230 });
1231
1232 fugit2-nvim = super.fugit2-nvim.overrideAttrs {
1233 # Requires web-devicons but mini.icons can mock them up
1234 checkInputs = [
1235 self.nvim-web-devicons
1236 ];
1237 dependencies = with self; [
1238 nui-nvim
1239 plenary-nvim
1240 ];
1241 # Patch libgit2 library dependency
1242 postPatch = ''
1243 substituteInPlace lua/fugit2/libgit2.lua \
1244 --replace-fail \
1245 'M.library_path = "libgit2"' \
1246 'M.library_path = "${lib.getLib libgit2}/lib/libgit2${stdenv.hostPlatform.extensions.sharedLibrary}"'
1247 '';
1248 };
1249
1250 fuzzy-nvim = super.fuzzy-nvim.overrideAttrs {
1251 checkInputs = with self; [
1252 # Optional sorters
1253 telescope-zf-native-nvim
1254 ];
1255 dependencies = [ self.telescope-fzf-native-nvim ];
1256 nvimSkipModules = [
1257 # TODO: package fzy-lua-native
1258 "fuzzy_nvim.fzy_matcher"
1259 ];
1260 };
1261
1262 fyler-nvim = super.fyler-nvim.overrideAttrs {
1263 nvimSkipModules = [
1264 # Requires setup call
1265 "fyler.views.explorer.init"
1266 "fyler.views.explorer.actions"
1267 "fyler.views.explorer.ui"
1268 ];
1269 };
1270
1271 fzf-checkout-vim = super.fzf-checkout-vim.overrideAttrs {
1272 # The plugin has a makefile which tries to run tests in a docker container.
1273 # This prevents it.
1274 prePatch = ''
1275 rm Makefile
1276 '';
1277 };
1278
1279 fzf-hoogle-vim = super.fzf-hoogle-vim.overrideAttrs (oa: {
1280 # add this to your lua config to prevent the plugin from trying to write in the
1281 # nix store:
1282 # vim.g.hoogle_fzf_cache_file = vim.fn.stdpath('cache')..'/hoogle_cache.json'
1283 propagatedBuildInputs = [
1284 jq
1285 gawk
1286 ];
1287 dependencies = [ self.fzf-vim ];
1288 passthru = oa.passthru // {
1289
1290 initLua = "vim.g.hoogle_fzf_cache_file = vim.fn.stdpath('cache')..'/hoogle_cache.json";
1291 };
1292 });
1293
1294 fzf-lsp-nvim = super.fzf-lsp-nvim.overrideAttrs {
1295 dependencies = [ self.plenary-nvim ];
1296 };
1297
1298 fzf-lua = neovimUtils.buildNeovimPlugin {
1299 luaAttr = luaPackages.fzf-lua;
1300 runtimeDeps = [ fzf ];
1301 nvimSkipModules = [
1302 "fzf-lua.shell_helper"
1303 "fzf-lua.spawn"
1304 "fzf-lua.rpc"
1305 "fzf-lua.types"
1306 ];
1307 };
1308
1309 fzf-vim = super.fzf-vim.overrideAttrs {
1310 dependencies = [ self.fzfWrapper ];
1311 };
1312
1313 # Mainly used as a dependency for fzf-vim. Wraps the fzf program as a vim
1314 # plugin, since part of the fzf vim plugin is included in the main fzf
1315 # program.
1316 fzfWrapper = buildVimPlugin {
1317 inherit (fzf) src version;
1318 pname = "fzf";
1319 postInstall = ''
1320 ln -s ${fzf}/bin/fzf $target/bin/fzf
1321 '';
1322 };
1323
1324 gen-nvim = super.gen-nvim.overrideAttrs {
1325 runtimeDeps = [ curl ];
1326 };
1327
1328 ghcid = super.ghcid.overrideAttrs {
1329 configurePhase = "cd plugins/nvim";
1330 };
1331
1332 gh-nvim = super.gh-nvim.overrideAttrs {
1333 dependencies = [ self.litee-nvim ];
1334 };
1335
1336 gitlinker-nvim = super.gitlinker-nvim.overrideAttrs {
1337 dependencies = [ self.plenary-nvim ];
1338 };
1339
1340 git-conflict-nvim = super.git-conflict-nvim.overrideAttrs {
1341 # TODO: Remove after next fixed version
1342 # https://github.com/akinsho/git-conflict.nvim/issues/103
1343 version = "2.1.0";
1344 src = fetchFromGitHub {
1345 owner = "akinsho";
1346 repo = "git-conflict.nvim";
1347 tag = "v2.1.0";
1348 hash = "sha256-1t0kKxTGLuOvuRkoLgkoqMZpF+oKo8+gMsTdgPsSb+8=";
1349 };
1350 };
1351
1352 git-worktree-nvim = super.git-worktree-nvim.overrideAttrs {
1353 dependencies = [ self.plenary-nvim ];
1354 };
1355
1356 go-nvim = super.go-nvim.overrideAttrs {
1357 checkInputs = with self; [
1358 luasnip
1359 null-ls-nvim
1360 nvim-treesitter
1361 ];
1362 nvimSkipModules = [
1363 # _GO_NVIM_CFG
1364 "go.inlay"
1365 "go.project"
1366 "go.comment"
1367 "go.tags"
1368 "go.gotests"
1369 "go.format"
1370 "go.ts.go"
1371 "go.ts.nodes"
1372 "go.snips"
1373 "snips.go"
1374 ];
1375 };
1376
1377 GPTModels-nvim = super.GPTModels-nvim.overrideAttrs {
1378 dependencies = with self; [
1379 nui-nvim
1380 telescope-nvim
1381 ];
1382 };
1383
1384 guard-collection = super.guard-collection.overrideAttrs {
1385 dependencies = [ self.guard-nvim ];
1386 };
1387
1388 gx-nvim = super.gx-nvim.overrideAttrs {
1389 patches = lib.optionals stdenv.hostPlatform.isLinux [
1390 (replaceVars ./patches/gx-nvim/fix-paths.patch {
1391 inherit xdg-utils;
1392 })
1393 ];
1394
1395 nvimRequireCheck = "gx";
1396 };
1397
1398 hardhat-nvim = super.hardhat-nvim.overrideAttrs {
1399 checkInputs = with self; [
1400 # optional integrations
1401 neotest
1402 telescope-nvim
1403 overseer-nvim
1404 ];
1405
1406 dependencies = with self; [
1407 plenary-nvim
1408 ];
1409
1410 nvimSkipModules = [
1411 # Cannot find hardhat.extmarks
1412 "overseer.component.hardhat.refresh_gas_extmarks"
1413 ];
1414 };
1415
1416 harpoon = super.harpoon.overrideAttrs {
1417 dependencies = [ self.plenary-nvim ];
1418 };
1419
1420 harpoon2 = super.harpoon2.overrideAttrs {
1421 dependencies = [ self.plenary-nvim ];
1422 nvimSkipModules = [
1423 # Access harpoon data file
1424 "harpoon.scratch.toggle"
1425 ];
1426 };
1427
1428 haskell-scope-highlighting-nvim = super.haskell-scope-highlighting-nvim.overrideAttrs {
1429 dependencies = [ self.nvim-treesitter ];
1430 };
1431
1432 haskell-snippets-nvim = super.haskell-snippets-nvim.overrideAttrs {
1433 dependencies = [ self.luasnip ];
1434 };
1435
1436 haskell-tools-nvim = neovimUtils.buildNeovimPlugin {
1437 # Optional integrations
1438 checkInputs = [ self.telescope-nvim ];
1439 luaAttr = luaPackages.haskell-tools-nvim;
1440 };
1441
1442 helm-ls-nvim = super.helm-ls-nvim.overrideAttrs {
1443 runtimeDeps = [
1444 helm-ls
1445 ];
1446 };
1447
1448 helpview-nvim = super.helpview-nvim.overrideAttrs {
1449 nvimSkipModules = [ "definitions.__vimdoc" ];
1450 };
1451
1452 hex-nvim = super.hex-nvim.overrideAttrs {
1453 runtimeDeps = [ xxd ];
1454 };
1455
1456 himalaya-vim = super.himalaya-vim.overrideAttrs {
1457 buildInputs = [ himalaya ];
1458 # Optional integrations
1459 checkInputs = with self; [
1460 fzf-lua
1461 telescope-nvim
1462 ];
1463 };
1464
1465 hover-nvim = super.hover-nvim.overrideAttrs {
1466 # Single provider issue with reading from config
1467 # /lua/hover/providers/fold_preview.lua:27: attempt to index local 'config' (a nil value)
1468 nvimSkipModules = "hover.providers.fold_preview";
1469 };
1470
1471 hunk-nvim = super.hunk-nvim.overrideAttrs {
1472 dependencies = [ self.nui-nvim ];
1473 };
1474
1475 # https://hurl.dev/
1476 hurl = buildVimPlugin {
1477 pname = "hurl";
1478 version = hurl.version;
1479 # dontUnpack = true;
1480
1481 src = "${hurl.src}/contrib/vim";
1482 };
1483
1484 hurl-nvim = super.hurl-nvim.overrideAttrs {
1485 dependencies = with self; [
1486 nui-nvim
1487 nvim-treesitter
1488 plenary-nvim
1489 ];
1490
1491 runtimeDeps = [
1492 hurl
1493 ];
1494
1495 nvimSkipModules = [
1496 # attempt to index global '_HURL_GLOBAL_CONFIG' (a nil value)
1497 "hurl.popup"
1498 "hurl.split"
1499 ];
1500 };
1501
1502 idris2-nvim = super.idris2-nvim.overrideAttrs {
1503 dependencies = with self; [
1504 nui-nvim
1505 nvim-lspconfig
1506 ];
1507
1508 doInstallCheck = true;
1509 };
1510
1511 indent-blankline-nvim = super.indent-blankline-nvim.overrideAttrs {
1512 # Meta file
1513 nvimSkipModules = "ibl.config.types";
1514 };
1515
1516 indent-tools-nvim = super.indent-tools-nvim.overrideAttrs {
1517 dependencies = with self; [
1518 arshlib-nvim
1519 nvim-treesitter
1520 nvim-treesitter-textobjects
1521 ];
1522 };
1523
1524 instant-nvim = super.instant-nvim.overrideAttrs {
1525 nvimSkipModules = [
1526 # Requires global variable config
1527 "instant"
1528 # instant/log.lua:12: cannot use '...' outside a vararg function near '...'
1529 "instant.log"
1530 ];
1531 };
1532
1533 intellitab-nvim = super.intellitab-nvim.overrideAttrs {
1534 dependencies = [ self.nvim-treesitter ];
1535 };
1536
1537 jdd-nvim = super.jdd-nvim.overrideAttrs {
1538 dependencies = [ self.plenary-nvim ];
1539 };
1540
1541 jedi-vim = super.jedi-vim.overrideAttrs {
1542 # checking for python3 support in vim would be neat, too, but nobody else seems to care
1543 buildInputs = [ python3.pkgs.jedi ];
1544 meta = {
1545 description = "code-completion for python using python-jedi";
1546 license = lib.licenses.mit;
1547 };
1548 };
1549
1550 jellybeans-nvim = super.jellybeans-nvim.overrideAttrs {
1551 dependencies = [ self.lush-nvim ];
1552 };
1553
1554 jupytext-nvim = super.jupytext-nvim.overrideAttrs {
1555 passthru.python3Dependencies = ps: [ ps.jupytext ];
1556 };
1557
1558 kanagawa-paper-nvim = super.kanagawa-paper-nvim.overrideAttrs {
1559 nvimSkipModules = [
1560 # skipping wezterm theme switcher since it relies on a wezterm module
1561 # that does not seem to be available, tried to build setting wezterm-nvim as a dep
1562 "wezterm.theme_switcher"
1563 ];
1564 };
1565
1566 kulala-nvim = super.kulala-nvim.overrideAttrs {
1567 dependencies = with self; [
1568 nvim-treesitter
1569 nvim-treesitter-parsers.http
1570 ];
1571 buildInputs = [ curl ];
1572 postPatch = ''
1573 substituteInPlace lua/kulala/config/defaults.lua \
1574 --replace-fail 'curl_path = "curl"' 'curl_path = "${lib.getExe curl}"'
1575 '';
1576 nvimSkipModules = [
1577 # Requires some extra work to get CLI working in nixpkgs
1578 "cli.kulala_cli"
1579 ];
1580 };
1581
1582 lazydocker-nvim = super.lazydocker-nvim.overrideAttrs {
1583 runtimeDeps = [
1584 lazydocker
1585 ];
1586 };
1587
1588 lazyjj-nvim = super.lazyjj-nvim.overrideAttrs {
1589 dependencies = [ self.plenary-nvim ];
1590 runtimeDeps = [
1591 lazyjj
1592 ];
1593 };
1594
1595 LazyVim = super.LazyVim.overrideAttrs {
1596 # Any other dependency is optional
1597 dependencies = [ self.lazy-nvim ];
1598 nvimSkipModules = [
1599 # attempt to index global 'LazyVim' (a nil value)
1600 "lazyvim.config.keymaps"
1601 "lazyvim.plugins.extras.ai.tabnine"
1602 "lazyvim.plugins.extras.coding.blink"
1603 "lazyvim.plugins.extras.coding.luasnip"
1604 "lazyvim.plugins.extras.coding.neogen"
1605 "lazyvim.plugins.extras.editor.fzf"
1606 "lazyvim.plugins.extras.editor.snacks_picker"
1607 "lazyvim.plugins.extras.editor.telescope"
1608 "lazyvim.plugins.extras.formatting.prettier"
1609 "lazyvim.plugins.extras.lang.markdown"
1610 "lazyvim.plugins.extras.lang.omnisharp"
1611 "lazyvim.plugins.extras.lang.python"
1612 "lazyvim.plugins.extras.lang.svelte"
1613 "lazyvim.plugins.extras.lang.typescript"
1614 "lazyvim.plugins.init"
1615 "lazyvim.plugins.ui"
1616 "lazyvim.plugins.xtras"
1617 ];
1618 };
1619
1620 lazy-lsp-nvim = super.lazy-lsp-nvim.overrideAttrs {
1621 dependencies = [ self.nvim-lspconfig ];
1622 };
1623
1624 lazy-nvim = super.lazy-nvim.overrideAttrs {
1625 patches = [ ./patches/lazy-nvim/no-helptags.patch ];
1626 nvimSkipModules = [
1627 # Requires headless config option
1628 "lazy.manage.task.init"
1629 "lazy.manage.checker"
1630 "lazy.manage.init"
1631 "lazy.manage.runner"
1632 "lazy.view.commands"
1633 "lazy.build"
1634 ];
1635 };
1636
1637 LeaderF = super.LeaderF.overrideAttrs {
1638 nativeBuildInputs = [ python3.pkgs.setuptools ];
1639 buildInputs = [ python3 ];
1640 # rm */build/ to prevent dependencies on gcc
1641 # strip the *.so to keep files small
1642 buildPhase = ''
1643 patchShebangs .
1644 ./install.sh
1645 rm autoload/leaderf/fuzzyMatch_C/build/ -r
1646 '';
1647 stripDebugList = [ "autoload/leaderf/python" ];
1648 };
1649
1650 lean-nvim = super.lean-nvim.overrideAttrs {
1651 dependencies = with self; [
1652 nvim-lspconfig
1653 plenary-nvim
1654 ];
1655 };
1656
1657 leap-ast-nvim = super.leap-ast-nvim.overrideAttrs {
1658 dependencies = with self; [
1659 leap-nvim
1660 nvim-treesitter
1661 ];
1662 };
1663
1664 leetcode-nvim = super.leetcode-nvim.overrideAttrs {
1665 checkInputs = [ self.snacks-nvim ];
1666 dependencies = with self; [
1667 nui-nvim
1668 plenary-nvim
1669 telescope-nvim
1670 ];
1671
1672 doInstallCheck = true;
1673 nvimSkipModules = [
1674 # Requires setup call
1675 "leetcode.api.auth"
1676 "leetcode.api.headers"
1677 "leetcode.api.interpreter"
1678 "leetcode.api.problems"
1679 "leetcode.api.question"
1680 "leetcode.api.statistics"
1681 "leetcode.api.utils"
1682 "leetcode.cache.cookie"
1683 "leetcode.cache.init"
1684 "leetcode.cache.problemlist"
1685 "leetcode.picker.language.fzf"
1686 "leetcode.picker.question.fzf"
1687 "leetcode.picker.question.init"
1688 "leetcode.picker.question.snacks"
1689 "leetcode.picker.question.telescope"
1690 "leetcode.picker.tabs.fzf"
1691 "leetcode.runner.init"
1692 "leetcode-plugins.cn.api"
1693 "leetcode-ui.group.page.stats"
1694 "leetcode-ui.group.similar-questions"
1695 "leetcode-ui.layout.console"
1696 "leetcode-ui.lines.calendar"
1697 "leetcode-ui.lines.solved"
1698 "leetcode-ui.popup.console.result"
1699 "leetcode-ui.popup.info"
1700 "leetcode-ui.popup.languages"
1701 "leetcode-ui.popup.skills"
1702 "leetcode-ui.question"
1703 "leetcode-ui.renderer.menu"
1704 "leetcode-ui.renderer.result"
1705 ];
1706 };
1707
1708 legendary-nvim = super.legendary-nvim.overrideAttrs {
1709 dependencies = [ self.sqlite-lua ];
1710 nvimSkipModules = [
1711 "vimdoc-gen"
1712 "vimdocrc"
1713 ];
1714 };
1715
1716 lens-vim = super.lens-vim.overrideAttrs {
1717 # remove duplicate g:lens#animate in doc/lens.txt
1718 # https://github.com/NixOS/nixpkgs/pull/105810#issuecomment-740007985
1719 # https://github.com/camspiers/lens.vim/pull/40/files
1720 patches = [
1721 ./patches/lens-vim/remove_duplicate_g_lens_animate.patch
1722 ];
1723 };
1724
1725 lf-nvim = super.lf-nvim.overrideAttrs {
1726 dependencies = [ self.toggleterm-nvim ];
1727 };
1728
1729 lf-vim = super.lf-vim.overrideAttrs {
1730 dependencies = [ self.vim-floaterm ];
1731 };
1732
1733 lightline-bufferline = super.lightline-bufferline.overrideAttrs {
1734 # Requires web-devicons but mini.icons can mock them up
1735 checkInputs = [ self.nvim-web-devicons ];
1736 };
1737
1738 lightswitch-nvim = super.lightswitch-nvim.overrideAttrs {
1739 dependencies = [ self.nui-nvim ];
1740 };
1741
1742 lir-nvim = super.lir-nvim.overrideAttrs {
1743 dependencies = [ self.plenary-nvim ];
1744 };
1745
1746 lispdocs-nvim = super.lispdocs-nvim.overrideAttrs {
1747 dependencies = with self; [
1748 conjure
1749 sqlite-lua
1750 telescope-nvim
1751 plenary-nvim
1752 ];
1753 nvimSkipModules = [
1754 # Attempt to connect to sqlitedb
1755 "lispdocs.db"
1756 "lispdocs.finder"
1757 "lispdocs"
1758 ];
1759 };
1760
1761 litee-calltree-nvim = super.litee-calltree-nvim.overrideAttrs {
1762 dependencies = [ self.litee-nvim ];
1763 };
1764
1765 litee-filetree-nvim = super.litee-filetree-nvim.overrideAttrs {
1766 dependencies = [ self.litee-nvim ];
1767 };
1768
1769 litee-symboltree-nvim = super.litee-symboltree-nvim.overrideAttrs {
1770 dependencies = [ self.litee-nvim ];
1771 };
1772
1773 lspcontainers-nvim = super.lspcontainers-nvim.overrideAttrs {
1774 dependencies = [ self.nvim-lspconfig ];
1775 };
1776
1777 lspecho-nvim = super.lspecho-nvim.overrideAttrs {
1778 meta.license = lib.licenses.mit;
1779 };
1780
1781 lspsaga-nvim = super.lspsaga-nvim.overrideAttrs {
1782 # Other modules require setup call first
1783 nvimRequireCheck = "lspsaga";
1784 };
1785
1786 lsp_extensions-nvim = super.lsp_extensions-nvim.overrideAttrs {
1787 dependencies = [ self.plenary-nvim ];
1788 };
1789
1790 ltex_extra-nvim = super.ltex_extra-nvim.overrideAttrs {
1791 # Other modules require setup call first
1792 nvimRequireCheck = "ltex_extra";
1793 };
1794
1795 lualine-lsp-progress = super.lualine-lsp-progress.overrideAttrs {
1796 dependencies = [ self.lualine-nvim ];
1797 };
1798
1799 luasnip-latex-snippets-nvim = super.luasnip-latex-snippets-nvim.overrideAttrs {
1800 dependencies = [ self.luasnip ];
1801 # E5108: /luasnip-latex-snippets/luasnippets/tex/utils/init.lua:3: module 'luasnip-latex-snippets.luasnippets.utils.conditions' not found:
1802 # Need to fix upstream
1803 nvimSkipModules = [
1804 "luasnip-latex-snippets.luasnippets.tex.utils.init"
1805 ];
1806 };
1807
1808 LuaSnip-snippets-nvim = super.LuaSnip-snippets-nvim.overrideAttrs {
1809 checkInputs = [ self.luasnip ];
1810 };
1811
1812 luau-lsp-nvim = super.luau-lsp-nvim.overrideAttrs {
1813 dependencies = [ self.plenary-nvim ];
1814 runtimeDeps = [ luau-lsp ];
1815 };
1816
1817 magma-nvim = super.magma-nvim.overrideAttrs {
1818 passthru.python3Dependencies =
1819 ps: with ps; [
1820 pynvim
1821 jupyter-client
1822 ueberzug
1823 pillow
1824 cairosvg
1825 plotly
1826 ipykernel
1827 pyperclip
1828 pnglatex
1829 ];
1830 };
1831
1832 markdown-preview-nvim =
1833 let
1834 # We only need its dependencies `node-modules`.
1835 nodeDep = mkYarnModules rec {
1836 inherit (super.markdown-preview-nvim) pname version;
1837 packageJSON = ./patches/markdown-preview-nvim/package.json;
1838 yarnLock = "${super.markdown-preview-nvim.src}/yarn.lock";
1839 offlineCache = fetchYarnDeps {
1840 inherit yarnLock;
1841 hash = "sha256-kzc9jm6d9PJ07yiWfIOwqxOTAAydTpaLXVK6sEWM8gg=";
1842 };
1843 };
1844 in
1845 super.markdown-preview-nvim.overrideAttrs {
1846 patches = [
1847 (replaceVars ./patches/markdown-preview-nvim/fix-node-paths.patch {
1848 node = "${nodejs}/bin/node";
1849 })
1850 ];
1851 postInstall = ''
1852 ln -s ${nodeDep}/node_modules $out/app
1853 '';
1854
1855 nativeBuildInputs = [ nodejs ];
1856 doInstallCheck = true;
1857 installCheckPhase = ''
1858 node $out/app/index.js --version
1859 '';
1860 };
1861
1862 markid = super.markid.overrideAttrs {
1863 dependencies = [ self.nvim-treesitter ];
1864 };
1865
1866 mason-lspconfig-nvim = super.mason-lspconfig-nvim.overrideAttrs {
1867 dependencies = with self; [
1868 mason-nvim
1869 nvim-lspconfig
1870 ];
1871 };
1872
1873 mason-null-ls-nvim = super.mason-null-ls-nvim.overrideAttrs {
1874 dependencies = with self; [
1875 mason-nvim
1876 null-ls-nvim
1877 ];
1878 };
1879
1880 mason-nvim-dap-nvim = super.mason-nvim-dap-nvim.overrideAttrs {
1881 dependencies = with self; [
1882 mason-nvim
1883 nvim-dap
1884 ];
1885 };
1886
1887 mason-nvim = super.mason-nvim.overrideAttrs {
1888 nvimSkipModules = [
1889 # lua/mason-vendor/zzlib/inflate-bwo.lua:15: 'end' expected near '&'
1890 "mason-vendor.zzlib.inflate-bwo"
1891 # E5108: Error executing lua ...mplugin-mason.nvim-2025-05-06/lua/mason-test/helpers.lua:7: module 'luassert.spy' not found:
1892 "mason-test.helpers"
1893 ];
1894 };
1895
1896 mason-tool-installer-nvim = super.mason-tool-installer-nvim.overrideAttrs {
1897 dependencies = [ self.mason-nvim ];
1898 };
1899
1900 material-vim = super.material-vim.overrideAttrs {
1901 # Optional integration
1902 checkInputs = [ self.lualine-nvim ];
1903 };
1904
1905 meson = buildVimPlugin {
1906 inherit (meson) pname version src;
1907 preInstall = "cd data/syntax-highlighting/vim";
1908 meta.maintainers = with lib.maintainers; [ vcunat ];
1909 };
1910
1911 mind-nvim = super.mind-nvim.overrideAttrs {
1912 dependencies = [ self.plenary-nvim ];
1913 };
1914
1915 mini-nvim = super.mini-nvim.overrideAttrs {
1916 # reduce closure size
1917 postInstall = ''
1918 rm -rf $out/{Makefile,benchmarks,readmes,tests,scripts}
1919 '';
1920 };
1921
1922 minimap-vim = super.minimap-vim.overrideAttrs {
1923 preFixup = ''
1924 substituteInPlace $out/plugin/minimap.vim \
1925 --replace-fail "code-minimap" "${code-minimap}/bin/code-minimap"
1926 substituteInPlace $out/bin/minimap_generator.sh \
1927 --replace-fail "code-minimap" "${code-minimap}/bin/code-minimap"
1928 '';
1929
1930 doInstallCheck = true;
1931 vimCommandCheck = "MinimapToggle";
1932 };
1933
1934 minsnip-nvim = buildVimPlugin {
1935 pname = "minsnip.nvim";
1936 version = "2022-01-04";
1937 src = fetchFromGitHub {
1938 owner = "jose-elias-alvarez";
1939 repo = "minsnip.nvim";
1940 rev = "6ae2f3247b3a2acde540ccef2e843fdfcdfebcee";
1941 sha256 = "1db5az5civ2bnqg7v3g937mn150ys52258c3glpvdvyyasxb4iih";
1942 };
1943 meta.homepage = "https://github.com/jose-elias-alvarez/minsnip.nvim/";
1944 };
1945
1946 minuet-ai-nvim = super.minuet-ai-nvim.overrideAttrs {
1947 checkInputs = [
1948 # optional cmp integration
1949 self.nvim-cmp
1950 self.lualine-nvim
1951 ];
1952 dependencies = with self; [ plenary-nvim ];
1953 nvimSkipModules = [
1954 # Backends require configuration
1955 "minuet.backends.claude"
1956 "minuet.backends.codestral"
1957 "minuet.backends.gemini"
1958 "minuet.backends.huggingface"
1959 "minuet.backends.openai"
1960 "minuet.backends.openai_compatible"
1961 "minuet.backends.openai_fim_compatible"
1962 ];
1963 };
1964
1965 mkdnflow-nvim = super.mkdnflow-nvim.overrideAttrs {
1966 dependencies = [ self.plenary-nvim ];
1967 # Requires setup call and has optional nvim-cmp dependency
1968 nvimRequireCheck = "mkdnflow";
1969 };
1970
1971 modicator-nvim = super.modicator-nvim.overrideAttrs {
1972 # Optional lualine integration
1973 nvimSkipModules = "modicator.integration.lualine.init";
1974 };
1975
1976 molten-nvim = super.molten-nvim.overrideAttrs {
1977 # Optional image providers
1978 checkInputs = with self; [
1979 image-nvim
1980 snacks-nvim
1981 wezterm-nvim
1982 ];
1983 };
1984
1985 multicursors-nvim = super.multicursors-nvim.overrideAttrs {
1986 dependencies = with self; [
1987 nvim-treesitter
1988 hydra-nvim
1989 ];
1990 };
1991
1992 muren-nvim = super.muren-nvim.overrideAttrs {
1993 dependencies = [ self.plenary-nvim ];
1994 };
1995
1996 ncm2 = super.ncm2.overrideAttrs {
1997 dependencies = [ self.nvim-yarp ];
1998 };
1999
2000 ncm2-jedi = super.ncm2-jedi.overrideAttrs {
2001 dependencies = with self; [
2002 nvim-yarp
2003 ncm2
2004 ];
2005 passthru.python3Dependencies = ps: with ps; [ jedi ];
2006 };
2007
2008 ncm2-neoinclude = super.ncm2-neoinclude.overrideAttrs {
2009 dependencies = [ self.neoinclude-vim ];
2010 };
2011
2012 ncm2-neosnippet = super.ncm2-neosnippet.overrideAttrs {
2013 dependencies = [ self.neosnippet-vim ];
2014 };
2015
2016 ncm2-syntax = super.ncm2-syntax.overrideAttrs {
2017 dependencies = [ self.neco-syntax ];
2018 };
2019
2020 ncm2-ultisnips = super.ncm2-ultisnips.overrideAttrs {
2021 dependencies = [ self.ultisnips ];
2022 };
2023
2024 neoconf-nvim = super.neoconf-nvim.overrideAttrs {
2025 dependencies = [ self.nvim-lspconfig ];
2026
2027 doInstallCheck = true;
2028 };
2029
2030 neogit = super.neogit.overrideAttrs {
2031 # Optional diffview integration
2032 checkInputs = [ self.diffview-nvim ];
2033 dependencies = [ self.plenary-nvim ];
2034 nvimSkipModules = [
2035 # E5108: Error executing lua ...vim-2024-06-13/lua/diffview/api/views/diff/diff_view.lua:13: attempt to index global 'DiffviewGlobal' (a nil value)
2036 "neogit.integrations.diffview"
2037 "neogit.popups.diff.actions"
2038 "neogit.popups.diff.init"
2039 ];
2040 };
2041
2042 neorepl-nvim = super.neorepl-nvim.overrideAttrs {
2043 nvimSkipModules = [
2044 # Requires main module loaded first
2045 "neorepl.bufs"
2046 "neorepl.map"
2047 "neorepl.repl"
2048 ];
2049 };
2050
2051 neorg-telescope = super.neorg-telescope.overrideAttrs {
2052 buildInputs = [ luaPackages.lua-utils-nvim ];
2053 dependencies = with self; [
2054 neorg
2055 plenary-nvim
2056 telescope-nvim
2057 ];
2058 };
2059
2060 neotest-bash = super.neotest-bash.overrideAttrs {
2061 dependencies = with self; [
2062 neotest
2063 plenary-nvim
2064 ];
2065 };
2066
2067 neotest-ctest = super.neotest-ctest.overrideAttrs {
2068 dependencies = with self; [
2069 neotest
2070 nvim-nio
2071 plenary-nvim
2072 ];
2073 };
2074
2075 neotest-dart = super.neotest-dart.overrideAttrs {
2076 dependencies = with self; [
2077 neotest
2078 nvim-nio
2079 plenary-nvim
2080 ];
2081 };
2082
2083 neotest-deno = super.neotest-deno.overrideAttrs {
2084 dependencies = with self; [
2085 neotest
2086 nvim-nio
2087 plenary-nvim
2088 ];
2089 };
2090
2091 neotest-dotnet = super.neotest-dotnet.overrideAttrs {
2092 dependencies = with self; [
2093 neotest
2094 nvim-nio
2095 plenary-nvim
2096 ];
2097 };
2098
2099 neotest-elixir = super.neotest-elixir.overrideAttrs {
2100 dependencies = with self; [
2101 neotest
2102 nvim-nio
2103 plenary-nvim
2104 ];
2105 };
2106
2107 neotest-foundry = super.neotest-foundry.overrideAttrs {
2108 dependencies = with self; [
2109 neotest
2110 nvim-nio
2111 plenary-nvim
2112 ];
2113 };
2114
2115 neotest-go = super.neotest-go.overrideAttrs {
2116 dependencies = with self; [
2117 neotest
2118 nvim-nio
2119 plenary-nvim
2120 ];
2121 };
2122
2123 neotest-golang = super.neotest-golang.overrideAttrs {
2124 dependencies = with self; [
2125 neotest
2126 nvim-nio
2127 nvim-dap-go
2128 nvim-treesitter
2129 plenary-nvim
2130 ];
2131 };
2132
2133 neotest-gradle = super.neotest-gradle.overrideAttrs {
2134 dependencies = with self; [
2135 neotest
2136 nvim-nio
2137 plenary-nvim
2138 ];
2139 };
2140
2141 neotest-gtest = super.neotest-gtest.overrideAttrs {
2142 dependencies = with self; [
2143 neotest
2144 nvim-nio
2145 plenary-nvim
2146 nvim-treesitter-parsers.cpp
2147 ];
2148 nvimSkipModules = [
2149 # lua/plenary/path.lua:511: FileNotFoundError from mkdir because of stdpath parent path missing
2150 "neotest-gtest.executables.global_registry"
2151 "neotest-gtest.executables.init"
2152 "neotest-gtest.executables.registry"
2153 "neotest-gtest.executables.ui"
2154 "neotest-gtest"
2155 "neotest-gtest.neotest_adapter"
2156 "neotest-gtest.report"
2157 "neotest-gtest.storage"
2158 "neotest-gtest.utils"
2159 ];
2160 };
2161
2162 neotest-haskell = super.neotest-haskell.overrideAttrs {
2163 dependencies = with self; [
2164 neotest
2165 plenary-nvim
2166 ];
2167 };
2168
2169 neotest-java = super.neotest-java.overrideAttrs {
2170 dependencies = with self; [
2171 neotest
2172 nvim-nio
2173 plenary-nvim
2174 ];
2175 };
2176
2177 neotest-jest = super.neotest-jest.overrideAttrs {
2178 dependencies = with self; [
2179 neotest
2180 nvim-nio
2181 ];
2182 # Unit test assert
2183 nvimSkipModules = "neotest-jest-assertions";
2184 };
2185
2186 neotest-mocha = super.neotest-mocha.overrideAttrs {
2187 dependencies = with self; [
2188 neotest
2189 nvim-nio
2190 nvim-treesitter
2191 plenary-nvim
2192 ];
2193 };
2194
2195 neotest-minitest = super.neotest-minitest.overrideAttrs {
2196 dependencies = with self; [
2197 neotest
2198 nvim-nio
2199 plenary-nvim
2200 ];
2201 };
2202
2203 neotest-pest = super.neotest-pest.overrideAttrs {
2204 dependencies = with self; [
2205 neotest
2206 nvim-nio
2207 plenary-nvim
2208 ];
2209 };
2210
2211 neotest-phpunit = super.neotest-phpunit.overrideAttrs {
2212 dependencies = with self; [
2213 neotest
2214 plenary-nvim
2215 nvim-nio
2216 ];
2217 };
2218
2219 neotest-playwright = super.neotest-playwright.overrideAttrs {
2220 dependencies = with self; [
2221 neotest
2222 nvim-nio
2223 plenary-nvim
2224 telescope-nvim
2225 ];
2226 # Unit test assert
2227 nvimSkipModules = "neotest-playwright-assertions";
2228 };
2229
2230 neotest-plenary = super.neotest-plenary.overrideAttrs {
2231 dependencies = with self; [
2232 neotest
2233 nvim-nio
2234 plenary-nvim
2235 ];
2236 };
2237
2238 neotest-python = super.neotest-python.overrideAttrs {
2239 dependencies = with self; [
2240 neotest
2241 nvim-nio
2242 plenary-nvim
2243 ];
2244 };
2245
2246 neotest-rspec = super.neotest-rspec.overrideAttrs {
2247 dependencies = with self; [
2248 neotest
2249 nvim-nio
2250 plenary-nvim
2251 ];
2252 };
2253
2254 neotest-rust = super.neotest-rust.overrideAttrs {
2255 dependencies = with self; [
2256 neotest
2257 nvim-nio
2258 plenary-nvim
2259 ];
2260 };
2261
2262 neotest-scala = super.neotest-scala.overrideAttrs {
2263 dependencies = with self; [
2264 neotest
2265 nvim-nio
2266 plenary-nvim
2267 ];
2268 };
2269
2270 neotest-testthat = super.neotest-testthat.overrideAttrs {
2271 dependencies = with self; [
2272 neotest
2273 nvim-nio
2274 plenary-nvim
2275 ];
2276 };
2277
2278 neotest-vitest = super.neotest-vitest.overrideAttrs {
2279 dependencies = with self; [
2280 neotest
2281 nvim-nio
2282 plenary-nvim
2283 ];
2284 # Unit test assert
2285 nvimSkipModules = "neotest-vitest-assertions";
2286 };
2287
2288 neotest-zig = super.neotest-zig.overrideAttrs {
2289 dependencies = with self; [
2290 neotest
2291 nvim-nio
2292 plenary-nvim
2293 ];
2294 };
2295
2296 neo-tree-nvim = super.neo-tree-nvim.overrideAttrs {
2297 dependencies = with self; [
2298 plenary-nvim
2299 nui-nvim
2300 ];
2301 nvimSkipModule = [
2302 "neo-tree.types.fixes.compat-0.10"
2303 ];
2304 };
2305
2306 netman-nvim = super.netman-nvim.overrideAttrs {
2307 # Optional neo-tree integration
2308 checkInputs = with self; [
2309 neo-tree-nvim
2310 # FIXME: propagate `neo-tree` dependencies
2311 nui-nvim
2312 plenary-nvim
2313 ];
2314 };
2315
2316 neuron-nvim = super.neuron-nvim.overrideAttrs {
2317 dependencies = with self; [
2318 plenary-nvim
2319 telescope-nvim
2320 ];
2321 };
2322
2323 neovim-trunk = super.neovim-trunk.overrideAttrs {
2324 dependencies = with self; [
2325 plenary-nvim
2326 telescope-nvim
2327 ];
2328 };
2329
2330 nlsp-settings-nvim = super.nlsp-settings-nvim.overrideAttrs {
2331 dependencies = [ self.nvim-lspconfig ];
2332 };
2333
2334 noctis-nvim = super.noctis-nvim.overrideAttrs {
2335 dependencies = [ self.lush-nvim ];
2336 };
2337
2338 noice-nvim = super.noice-nvim.overrideAttrs {
2339 dependencies = [ self.nui-nvim ];
2340 };
2341
2342 none-ls-nvim = super.none-ls-nvim.overrideAttrs {
2343 dependencies = [ self.plenary-nvim ];
2344 };
2345
2346 NotebookNavigator-nvim = super.NotebookNavigator-nvim.overrideAttrs {
2347 };
2348
2349 notmuch-vim = notmuch.vim;
2350
2351 nterm-nvim = super.nterm-nvim.overrideAttrs {
2352 dependencies = [ self.aniseed ];
2353 };
2354
2355 null-ls-nvim = super.null-ls-nvim.overrideAttrs {
2356 dependencies = [ self.plenary-nvim ];
2357 };
2358
2359 nvchad = super.nvchad.overrideAttrs {
2360 # You've signed up for a distro, providing dependencies.
2361 dependencies = with self; [
2362 gitsigns-nvim
2363 luasnip
2364 mason-nvim
2365 nvim-cmp
2366 nvim-lspconfig
2367 telescope-nvim
2368 nvim-treesitter
2369 ];
2370 nvimSkipModules = [
2371 # Requires global config setup
2372 "nvchad.configs.cmp"
2373 "nvchad.configs.gitsigns"
2374 "nvchad.configs.luasnip"
2375 "nvchad.configs.mason"
2376 "nvchad.configs.nvimtree"
2377 "nvchad.configs.telescope"
2378 ];
2379 };
2380
2381 nvchad-ui = super.nvchad-ui.overrideAttrs {
2382 dependencies = [ self.nvzone-volt ];
2383 nvimSkipModules = [
2384 # Requires global config setup
2385 "nvchad.tabufline.modules"
2386 "nvchad.term.init"
2387 "nvchad.themes.init"
2388 "nvchad.themes.mappings"
2389 "nvchad.cheatsheet.grid"
2390 "nvchad.cheatsheet.simple"
2391 "nvchad.blink.config"
2392 # Circular dependency with base46
2393 "nvchad.utils"
2394 ];
2395 };
2396
2397 nvim-autopairs = super.nvim-autopairs.overrideAttrs {
2398 # Optional completion dependency
2399 checkInputs = with self; [
2400 nvim-cmp
2401 ];
2402 nvimSkipModules = [
2403 # compe not packaged anymore
2404 "nvim-autopairs.completion.compe"
2405 ];
2406 };
2407
2408 nvim-biscuits = super.nvim-biscuits.overrideAttrs {
2409 dependencies = with self; [
2410 nvim-treesitter
2411 plenary-nvim
2412 ];
2413 };
2414
2415 nvim-cokeline = super.nvim-cokeline.overrideAttrs {
2416 dependencies = [ self.plenary-nvim ];
2417 };
2418
2419 nvim-coverage = super.nvim-coverage.overrideAttrs {
2420 dependencies = with self; [
2421 neotest
2422 plenary-nvim
2423 ];
2424 nvimSkipModules = [
2425 # TODO: Add lua-xmlreader package
2426 "coverage.parsers.corbertura"
2427 ];
2428 };
2429
2430 nvim-dap-cortex-debug = super.nvim-dap-cortex-debug.overrideAttrs {
2431 dependencies = [ self.nvim-dap ];
2432 };
2433
2434 nvim-dap-vscode-js = super.nvim-dap-vscode-js.overrideAttrs {
2435 dependencies = [ self.nvim-dap ];
2436 };
2437
2438 nvim-dap-lldb = super.nvim-dap-lldb.overrideAttrs {
2439 dependencies = [ self.nvim-dap ];
2440 };
2441
2442 nvim-dap-python = super.nvim-dap-python.overrideAttrs {
2443 dependencies = [ self.nvim-dap ];
2444 };
2445
2446 nvim-dap-rego = super.nvim-dap-rego.overrideAttrs {
2447 dependencies = [ self.nvim-dap ];
2448 };
2449
2450 nvim-dap-rr = super.nvim-dap-rr.overrideAttrs {
2451 dependencies = [ self.nvim-dap ];
2452 };
2453
2454 nvim-dap-ui = super.nvim-dap-ui.overrideAttrs {
2455 dependencies = with self; [
2456 nvim-dap
2457 nvim-nio
2458 ];
2459
2460 doInstallCheck = true;
2461 };
2462
2463 nvim-dap-view = super.nvim-dap-view.overrideAttrs {
2464 dependencies = [ self.nvim-dap ];
2465 };
2466
2467 nvim-dap-virtual-text = super.nvim-dap-virtual-text.overrideAttrs {
2468 dependencies = [ self.nvim-dap ];
2469 };
2470
2471 nvim-FeMaco-lua = super.nvim-FeMaco-lua.overrideAttrs {
2472 dependencies = [ self.nvim-treesitter ];
2473 };
2474
2475 nvim-fzf-commands = super.nvim-fzf-commands.overrideAttrs {
2476 dependencies = [ self.nvim-fzf ];
2477 # Requires global variable setup nvim_fzf_directory
2478 nvimSkipModules = "fzf-commands.rg";
2479 };
2480
2481 nvim-genghis = super.nvim-genghis.overrideAttrs {
2482 dependencies = [ self.dressing-nvim ];
2483
2484 doInstallCheck = true;
2485 };
2486
2487 nvim-gps = super.nvim-gps.overrideAttrs {
2488 dependencies = [ self.nvim-treesitter ];
2489 };
2490
2491 nvim-highlight-colors = super.nvim-highlight-colors.overrideAttrs {
2492 # Test module
2493 nvimSkipModules = [
2494 "nvim-highlight-colors.utils_spec"
2495 "nvim-highlight-colors.buffer_utils_spec"
2496 "nvim-highlight-colors.color.converters_spec"
2497 "nvim-highlight-colors.color.patterns_spec"
2498 "nvim-highlight-colors.color.utils_spec"
2499 ];
2500 };
2501
2502 nvim-java = super.nvim-java.overrideAttrs {
2503 dependencies = with self; [
2504 lua-async
2505 mason-nvim
2506 nui-nvim
2507 nvim-dap
2508 nvim-java-core
2509 nvim-java-dap
2510 nvim-java-refactor
2511 nvim-java-test
2512 nvim-lspconfig
2513 ];
2514 };
2515
2516 nvim-java-core = super.nvim-java-core.overrideAttrs {
2517 dependencies = with self; [
2518 mason-nvim
2519 nvim-lspconfig
2520 ];
2521 };
2522
2523 nvim-java-dap = super.nvim-java-dap.overrideAttrs {
2524 dependencies = [ self.nvim-java-core ];
2525 };
2526
2527 nvim-java-refactor = super.nvim-java-refactor.overrideAttrs {
2528 dependencies = [ self.nvim-java-core ];
2529 nvimSkipModules = [
2530 # Requires the `java.utils.ui` module which seems to be provided by `nvim-java` (cyclic dependency)
2531 # -> Skip to avoid infinite recursion
2532 "java-refactor.action"
2533 "java-refactor.refactor"
2534 ];
2535 };
2536
2537 nvim-java-test = super.nvim-java-test.overrideAttrs {
2538 dependencies = [ self.nvim-java-core ];
2539 };
2540
2541 nvim-lilypond-suite = super.nvim-lilypond-suite.overrideAttrs {
2542 nvimSkipModule = [
2543 # Option not set immediately
2544 "nvls.errors.lilypond-book"
2545 "nvls.tex"
2546 "nvls.texinfo"
2547 ];
2548 };
2549
2550 nvim-lsp-file-operations = super.nvim-lsp-file-operations.overrideAttrs {
2551 dependencies = [ self.plenary-nvim ];
2552 };
2553
2554 nvim-lsputils = super.nvim-lsputils.overrideAttrs {
2555 dependencies = [ self.popfix ];
2556 };
2557
2558 nvim-metals = super.nvim-metals.overrideAttrs {
2559 dependencies = [ self.plenary-nvim ];
2560 dontBuild = true;
2561 };
2562
2563 nvim-moonwalk = super.nvim-moonwalk.overrideAttrs {
2564 # Asserts log file exists before it is created
2565 nvimSkipModules = [ "moonwalk" ];
2566 };
2567
2568 nvim-navbuddy = super.nvim-navbuddy.overrideAttrs {
2569 dependencies = with self; [
2570 nui-nvim
2571 nvim-lspconfig
2572 nvim-navic
2573 ];
2574 };
2575 nvim-navic = super.nvim-navic.overrideAttrs {
2576 dependencies = [ self.nvim-lspconfig ];
2577 };
2578
2579 nvim-neoclip-lua = super.nvim-neoclip-lua.overrideAttrs {
2580 # Optional dependencies
2581 checkInputs = with self; [
2582 fzf-lua
2583 telescope-nvim
2584 ];
2585 };
2586
2587 nvim-nonicons = super.nvim-nonicons.overrideAttrs {
2588 # Requires web-devicons but mini.icons can mock them up
2589 checkInputs = [ self.nvim-web-devicons ];
2590 };
2591
2592 nvim-notify = super.nvim-notify.overrideAttrs {
2593 # Optional fzf integration
2594 checkInputs = [
2595 self.fzf-lua
2596 ];
2597 };
2598
2599 nvim-nu = super.nvim-nu.overrideAttrs {
2600 dependencies = with self; [
2601 nvim-treesitter
2602 none-ls-nvim
2603 ];
2604 };
2605
2606 nvim-paredit = super.nvim-paredit.overrideAttrs {
2607 dependencies = with self; [ nvim-treesitter ];
2608 };
2609
2610 nvim-rip-substitute = super.nvim-rip-substitute.overrideAttrs {
2611 buildInputs = [ ripgrep ];
2612 };
2613
2614 nvim-scissors = super.nvim-scissors.overrideAttrs {
2615 checkInputs = [
2616 # Optional telescope picker
2617 self.telescope-nvim
2618 ];
2619 };
2620
2621 nvim-snippets = super.nvim-snippets.overrideAttrs {
2622 checkInputs = [
2623 # Optional cmp integration
2624 self.nvim-cmp
2625 ];
2626 };
2627
2628 nvim-surround = super.nvim-surround.overrideAttrs {
2629 checkInputs = [
2630 # Optional treesitter integration
2631 self.nvim-treesitter
2632 ];
2633 };
2634
2635 nvim-teal-maker = super.nvim-teal-maker.overrideAttrs {
2636 postPatch = ''
2637 substituteInPlace lua/tealmaker/init.lua \
2638 --replace-fail cyan ${luaPackages.cyan}/bin/cyan
2639 '';
2640 vimCommandCheck = "TealBuild";
2641 };
2642
2643 nvim-test = super.nvim-test.overrideAttrs {
2644 # Optional toggleterm integration
2645 checkInputs = [ self.toggleterm-nvim ];
2646 dependencies = with self; [
2647 nvim-treesitter
2648 nvim-treesitter-parsers.c_sharp
2649 nvim-treesitter-parsers.go
2650 nvim-treesitter-parsers.haskell
2651 nvim-treesitter-parsers.javascript
2652 nvim-treesitter-parsers.python
2653 nvim-treesitter-parsers.ruby
2654 nvim-treesitter-parsers.rust
2655 nvim-treesitter-parsers.typescript
2656 nvim-treesitter-parsers.zig
2657 ];
2658 nvimSkipModules = [
2659 # Broken runners
2660 "nvim-test.runners.zig"
2661 "nvim-test.runners.hspec"
2662 "nvim-test.runners.stack"
2663 ];
2664 };
2665
2666 nvim-tinygit = super.nvim-tinygit.overrideAttrs {
2667 dependencies = with self; [
2668 telescope-nvim
2669 ];
2670
2671 checkInputs = [
2672 gitMinimal
2673 # transitive dependency (telescope-nvim) not properly propagated to the test environment
2674 self.plenary-nvim
2675 ];
2676 };
2677
2678 nvim-tree-lua = super.nvim-tree-lua.overrideAttrs {
2679 nvimSkipModules = [
2680 # Meta can't be required
2681 "nvim-tree._meta.api"
2682 "nvim-tree._meta.api_decorator"
2683 ];
2684 };
2685
2686 nvim-treesitter = super.nvim-treesitter.overrideAttrs (
2687 callPackage ./nvim-treesitter/overrides.nix { } self super
2688 );
2689
2690 nvim-treesitter-context = super.nvim-treesitter-context.overrideAttrs {
2691 # Meant for CI installing parsers
2692 nvimSkipModules = [ "install_parsers" ];
2693 };
2694
2695 nvim-treesitter-endwise = super.nvim-treesitter-endwise.overrideAttrs {
2696 dependencies = [ self.nvim-treesitter ];
2697 };
2698
2699 nvim-treesitter-pairs = super.nvim-treesitter-pairs.overrideAttrs {
2700 dependencies = [ self.nvim-treesitter ];
2701 };
2702
2703 nvim-treesitter-parsers = lib.recurseIntoAttrs self.nvim-treesitter.grammarPlugins;
2704
2705 nvim-treesitter-pyfold = super.nvim-treesitter-pyfold.overrideAttrs {
2706 dependencies = [ self.nvim-treesitter ];
2707 };
2708
2709 nvim-treesitter-refactor = super.nvim-treesitter-refactor.overrideAttrs {
2710 dependencies = [ self.nvim-treesitter ];
2711 };
2712
2713 nvim-treesitter-sexp = super.nvim-treesitter-sexp.overrideAttrs {
2714 dependencies = [ self.nvim-treesitter ];
2715 };
2716
2717 nvim-treesitter-textobjects = super.nvim-treesitter-textobjects.overrideAttrs {
2718 dependencies = [ self.nvim-treesitter ];
2719 };
2720
2721 nvim-treesitter-textsubjects = super.nvim-treesitter-textsubjects.overrideAttrs {
2722 dependencies = [ self.nvim-treesitter ];
2723 };
2724
2725 nvim-trevJ-lua = super.nvim-trevJ-lua.overrideAttrs {
2726 dependencies = [ self.nvim-treesitter ];
2727 };
2728
2729 nvim-ufo = super.nvim-ufo.overrideAttrs {
2730 dependencies = [ self.promise-async ];
2731 };
2732
2733 nvim-unception = super.nvim-unception.overrideAttrs {
2734 # Attempt rpc socket connection
2735 nvimSkipModules = "client.client";
2736 };
2737
2738 nvim-vtsls = super.nvim-vtsls.overrideAttrs {
2739 runtimeDeps = [ vtsls ];
2740 dependencies = [ self.nvim-lspconfig ];
2741 };
2742
2743 nvzone-menu = super.nvzone-menu.overrideAttrs {
2744 checkInputs = with self; [
2745 # Optional integrations
2746 nvim-tree-lua
2747 neo-tree-nvim
2748 # FIXME: should propagate from neo-tree-nvim
2749 nui-nvim
2750 plenary-nvim
2751 ];
2752 dependencies = [ self.nvzone-volt ];
2753 };
2754
2755 nvzone-minty = super.nvzone-minty.overrideAttrs {
2756 dependencies = [ self.nvzone-volt ];
2757 };
2758
2759 nvzone-typr = super.nvzone-typr.overrideAttrs {
2760 dependencies = [ self.nvzone-volt ];
2761 };
2762
2763 obsidian-nvim = super.obsidian-nvim.overrideAttrs {
2764 checkInputs = with self; [
2765 # Optional pickers
2766 fzf-lua
2767 mini-nvim
2768 snacks-nvim
2769 telescope-nvim
2770 ];
2771 dependencies = [ self.plenary-nvim ];
2772 nvimSkipModules = [
2773 # Issue reproduction file
2774 "minimal"
2775 ];
2776 };
2777
2778 octo-nvim = super.octo-nvim.overrideAttrs {
2779 checkInputs = with self; [
2780 # Pickers, can use telescope or fzf-lua
2781 fzf-lua
2782 telescope-nvim
2783 snacks-nvim
2784 ];
2785 dependencies = with self; [
2786 plenary-nvim
2787 ];
2788 };
2789
2790 oil-git-status-nvim = super.oil-git-status-nvim.overrideAttrs {
2791 dependencies = [ self.oil-nvim ];
2792 };
2793
2794 ollama-nvim = super.ollama-nvim.overrideAttrs {
2795 dependencies = [ self.plenary-nvim ];
2796 };
2797
2798 omni-vim = super.omni-vim.overrideAttrs {
2799 # Optional lightline integration
2800 nvimSkipModules = "omni-lightline";
2801 };
2802
2803 onedark-nvim = super.onedark-nvim.overrideAttrs {
2804 nvimSkipModules = [
2805 # Requires global config value
2806 "barbecue.theme.onedark"
2807 "onedark.highlights"
2808 "onedark.colors"
2809 "onedark.terminal"
2810 ];
2811 };
2812
2813 onehalf = super.onehalf.overrideAttrs {
2814 configurePhase = "cd vim";
2815 };
2816
2817 one-nvim = super.one-nvim.overrideAttrs {
2818 # E5108: /lua/one-nvim.lua:14: Unknown option 't_Co'
2819 # https://github.com/Th3Whit3Wolf/one-nvim/issues/23
2820 meta.broken = true;
2821 };
2822
2823 # The plugin depends on either skim-vim or fzf-vim, but we don't want to force the user so we
2824 # avoid choosing one of them and leave it to the user
2825 openscad-nvim = super.openscad-nvim.overrideAttrs {
2826 buildInputs = [
2827 zathura
2828 htop
2829 openscad
2830 ];
2831
2832 # FIXME: can't find plugin root dir
2833 nvimSkipModules = [
2834 "openscad"
2835 "openscad.snippets.openscad"
2836 "openscad.utilities"
2837 ];
2838 patches = [
2839 (replaceVars ./patches/openscad.nvim/program_paths.patch {
2840 htop = lib.getExe htop;
2841 openscad = lib.getExe openscad;
2842 zathura = lib.getExe zathura;
2843 })
2844 ];
2845 };
2846
2847 org-roam-nvim = super.org-roam-nvim.overrideAttrs {
2848 dependencies = [ self.orgmode ];
2849 };
2850
2851 otter-nvim = super.otter-nvim.overrideAttrs {
2852 dependencies = [ self.nvim-lspconfig ];
2853 nvimSkipModules = [
2854 # requires config setup
2855 "otter.keeper"
2856 "otter.lsp.handlers"
2857 "otter.lsp.init"
2858 "otter.diagnostics"
2859 ];
2860 };
2861
2862 outline-nvim = super.outline-nvim.overrideAttrs {
2863 # Requires setup call
2864 nvimSkipModules = "outline.providers.norg";
2865 };
2866
2867 overseer-nvim = super.overseer-nvim.overrideAttrs {
2868 checkInputs = with self; [
2869 # Optional integration
2870 neotest
2871 toggleterm-nvim
2872 nvim-dap
2873 ];
2874 checkPhase = ''
2875 runHook preCheck
2876
2877 plugins=.testenv/data/nvim/site/pack/plugins/start
2878 mkdir -p "$plugins"
2879 ln -s ${self.plenary-nvim} "$plugins/plenary.nvim"
2880 bash run_tests.sh
2881 rm -r .testenv
2882
2883 runHook postCheck
2884 '';
2885 };
2886
2887 package-info-nvim = super.package-info-nvim.overrideAttrs {
2888 dependencies = [ self.nui-nvim ];
2889 };
2890
2891 inherit parinfer-rust;
2892
2893 parpar-nvim = super.parpar-nvim.overrideAttrs {
2894 dependencies = with self; [
2895 nvim-parinfer
2896 nvim-paredit
2897 nvim-treesitter
2898 ];
2899 };
2900
2901 parrot-nvim = super.parrot-nvim.overrideAttrs {
2902 runtimeDeps = [
2903 curl
2904 ];
2905
2906 dependencies = with self; [
2907 plenary-nvim
2908 ];
2909
2910 checkInputs = [
2911 curl
2912 ripgrep
2913 # Optional integrations
2914 self.blink-cmp
2915 self.nvim-cmp
2916 ];
2917 };
2918
2919 peek-nvim = super.peek-nvim.overrideAttrs (old: {
2920 patches = [
2921 # Patch peek-nvim to run using nixpkgs deno
2922 # This means end-users have to build peek-nvim the first time they use it...
2923 (replaceVars ./patches/peek-nvim/cmd.patch {
2924 deno = lib.getExe deno;
2925 })
2926 ];
2927 });
2928
2929 persisted-nvim = super.persisted-nvim.overrideAttrs {
2930 nvimSkipModules = [
2931 # /lua/persisted/init.lua:44: attempt to index upvalue 'config' (a nil value)
2932 # https://github.com/olimorris/persisted.nvim/issues/146
2933 "persisted"
2934 "persisted.config"
2935 "persisted.utils"
2936 ];
2937 };
2938
2939 persistent-breakpoints-nvim = super.persistent-breakpoints-nvim.overrideAttrs {
2940 dependencies = with self; [
2941 nvim-dap
2942 ];
2943 };
2944
2945 phpactor = buildVimPlugin {
2946 inherit (phpactor)
2947 pname
2948 src
2949 meta
2950 version
2951 ;
2952 postPatch = ''
2953 substituteInPlace plugin/phpactor.vim \
2954 --replace-fail "g:phpactorpath = expand('<sfile>:p:h') . '/..'" "g:phpactorpath = '${phpactor}'"
2955 '';
2956 };
2957
2958 plantuml-nvim = super.plantuml-nvim.overrideAttrs {
2959 dependencies = [ self.LibDeflate-nvim ];
2960 };
2961
2962 playground = super.playground.overrideAttrs {
2963 dependencies = with self; [
2964 # we need the 'query' grammar to make
2965 (nvim-treesitter.withPlugins (p: [ p.query ]))
2966 ];
2967 };
2968
2969 poimandres-nvim = super.poimandres-nvim.overrideAttrs {
2970 # Optional treesitter support
2971 nvimSkipModules = "poimandres.highlights";
2972 };
2973
2974 popup-nvim = super.popup-nvim.overrideAttrs {
2975 dependencies = [ self.plenary-nvim ];
2976 };
2977
2978 Preview-nvim = super.Preview-nvim.overrideAttrs {
2979 patches = [
2980 (replaceVars ./patches/preview-nvim/hardcode-mdt-binary-path.patch {
2981 mdt = lib.getExe md-tui;
2982 })
2983 ];
2984 };
2985
2986 python-mode = super.python-mode.overrideAttrs {
2987 postPatch = ''
2988 # NOTE: Fix broken symlink - the pytoolconfig directory was moved to src/
2989 # https://github.com/python-mode/python-mode/pull/1189#issuecomment-3109528360
2990 rm -f pymode/libs/pytoolconfig
2991 ln -sf ../../submodules/pytoolconfig/src/pytoolconfig pymode/libs/pytoolconfig
2992 '';
2993 };
2994
2995 pywal-nvim = super.pywal-nvim.overrideAttrs {
2996 # Optional feline integration
2997 nvimSkipModules = "pywal.feline";
2998 };
2999
3000 qmk-nvim = super.qmk-nvim.overrideAttrs {
3001 dependencies = [ self.plenary-nvim ];
3002 nvimSkipModules = [
3003 # Test assertions
3004 "qmk.config.init_spec"
3005 "qmk.format.keymap_spec"
3006 "qmk.format.qmk_spec"
3007 "qmk.format.zmk_spec"
3008 "qmk.parse.qmk.init_spec"
3009 "qmk.parse.zmk.init_spec"
3010 "qmk_spec"
3011 ];
3012 };
3013
3014 quarto-nvim = super.quarto-nvim.overrideAttrs {
3015 checkInputs = [
3016 # Optional runner
3017 self.iron-nvim
3018 ];
3019 dependencies = with self; [
3020 nvim-lspconfig
3021 otter-nvim
3022 ];
3023 nvimSkipModules = [
3024 "quarto.runner.init"
3025 ];
3026 };
3027
3028 range-highlight-nvim = super.range-highlight-nvim.overrideAttrs {
3029 dependencies = [ self.cmd-parser-nvim ];
3030 };
3031
3032 ranger-nvim = super.ranger-nvim.overrideAttrs {
3033 patches = [ ./patches/ranger.nvim/fix-paths.patch ];
3034
3035 postPatch = ''
3036 substituteInPlace lua/ranger-nvim.lua --replace-fail '@ranger@' ${ranger}/bin/ranger
3037 '';
3038 };
3039
3040 refactoring-nvim = super.refactoring-nvim.overrideAttrs {
3041 dependencies = with self; [
3042 nvim-treesitter
3043 plenary-nvim
3044 ];
3045 };
3046
3047 remote-nvim-nvim = super.remote-nvim-nvim.overrideAttrs {
3048 dontPatchShebangs = true;
3049 dependencies = with self; [
3050 nui-nvim
3051 plenary-nvim
3052 ];
3053 nvimSkipModules = [ "repro" ];
3054 };
3055
3056 remote-sshfs-nvim = super.remote-sshfs-nvim.overrideAttrs {
3057 dependencies = with self; [
3058 telescope-nvim
3059 plenary-nvim
3060 ];
3061 runtimeDeps = [
3062 openssh
3063 sshfs
3064 ];
3065 };
3066
3067 renamer-nvim = super.renamer-nvim.overrideAttrs {
3068 dependencies = [ self.plenary-nvim ];
3069 };
3070
3071 repolink-nvim = super.repolink-nvim.overrideAttrs {
3072 dependencies = [ self.plenary-nvim ];
3073 };
3074
3075 rocks-nvim =
3076 (neovimUtils.buildNeovimPlugin {
3077 luaAttr = luaPackages.rocks-nvim;
3078 }).overrideAttrs
3079 (oa: {
3080 passthru = oa.passthru // {
3081 initLua = ''
3082 vim.g.rocks_nvim = {
3083 luarocks_binary = "${neovim-unwrapped.lua.pkgs.luarocks_bootstrap}/bin/luarocks"
3084 }
3085 '';
3086 };
3087
3088 });
3089
3090 rustaceanvim = neovimUtils.buildNeovimPlugin {
3091 checkInputs = [
3092 # Optional integration
3093 self.neotest
3094 ];
3095 luaAttr = luaPackages.rustaceanvim;
3096 };
3097
3098 rust-tools-nvim = super.rust-tools-nvim.overrideAttrs {
3099 dependencies = [ self.nvim-lspconfig ];
3100 };
3101
3102 rzls-nvim = super.rzls-nvim.overrideAttrs {
3103 dependencies = [ self.roslyn-nvim ];
3104 };
3105
3106 samodostal-image-nvim = super.samodostal-image-nvim.overrideAttrs {
3107 dependencies = [ self.plenary-nvim ];
3108 };
3109
3110 schema-companion-nvim = super.schema-companion-nvim.overrideAttrs {
3111 dependencies = [ self.plenary-nvim ];
3112 };
3113
3114 scretch-nvim = super.scretch-nvim.overrideAttrs {
3115 };
3116
3117 searchbox-nvim = super.searchbox-nvim.overrideAttrs {
3118 dependencies = [ self.nui-nvim ];
3119 };
3120
3121 search-and-replace-nvim = super.search-and-replace-nvim.overrideAttrs {
3122 runtimeDeps = [
3123 fd
3124 sad
3125 ];
3126 };
3127
3128 skim = buildVimPlugin {
3129 pname = "skim";
3130 inherit (skim) version;
3131 src = skim.vim;
3132 };
3133
3134 skim-vim = super.skim-vim.overrideAttrs {
3135 dependencies = [ self.skim ];
3136 };
3137
3138 smart-open-nvim = super.smart-open-nvim.overrideAttrs {
3139 dependencies = with self; [
3140 plenary-nvim
3141 sqlite-lua
3142 telescope-nvim
3143 ];
3144 nvimSkipModules = [
3145 # optional dependency
3146 "smart-open.matching.algorithms.fzf_implementation"
3147 ];
3148 };
3149
3150 smart-splits-nvim = super.smart-splits-nvim.overrideAttrs {
3151 nvimSkipModules = [
3152 "vimdoc-gen"
3153 "vimdocrc"
3154 ];
3155 };
3156
3157 snacks-nvim = super.snacks-nvim.overrideAttrs {
3158 # Optional trouble integration
3159 checkInputs = [ self.trouble-nvim ];
3160 nvimSkipModules = [
3161 # Requires setup call first
3162 # attempt to index global 'Snacks' (a nil value)
3163 "snacks.dashboard"
3164 "snacks.debug"
3165 "snacks.dim"
3166 "snacks.git"
3167 "snacks.image.convert"
3168 "snacks.image.image"
3169 "snacks.image.init"
3170 "snacks.image.placement"
3171 "snacks.indent"
3172 "snacks.input"
3173 "snacks.lazygit"
3174 "snacks.notifier"
3175 "snacks.picker.actions"
3176 "snacks.picker.config.highlights"
3177 "snacks.picker.core.list"
3178 "snacks.scratch"
3179 "snacks.scroll"
3180 "snacks.terminal"
3181 "snacks.win"
3182 "snacks.words"
3183 "snacks.zen"
3184 # TODO: Plugin requires libsqlite available, create a test for it
3185 "snacks.picker.util.db"
3186 ];
3187 };
3188
3189 snap = super.snap.overrideAttrs {
3190 nvimSkipModules = [
3191 "snap.consumer.fzy.all"
3192 "snap.consumer.fzy.filter"
3193 "snap.consumer.fzy.init"
3194 "snap.consumer.fzy.positions"
3195 "snap.consumer.fzy.score"
3196 # circular import
3197 "snap.producer.create"
3198 # https://github.com/camspiers/snap/pull/97
3199 "snap.preview.help"
3200 "snap.producer.vim.help"
3201 ];
3202 };
3203
3204 solarized-osaka-nvim = super.solarized-osaka-nvim.overrideAttrs {
3205 checkInputs = [ self.fzf-lua ];
3206
3207 nvimSkipModules = [
3208 # lua/solarized-osaka/extra/fzf.lua:55: color not found for header:FzfLuaTitle
3209 "solarized-osaka.extra.fzf"
3210 ];
3211 };
3212
3213 spaceman-nvim = super.spaceman-nvim.overrideAttrs {
3214 # Optional telescope integration
3215 nvimSkipModules = "spaceman.adapters.telescope";
3216 };
3217
3218 sqlite-lua = super.sqlite-lua.overrideAttrs (
3219 oa:
3220 let
3221 libsqlite = "${sqlite.out}/lib/libsqlite3${stdenv.hostPlatform.extensions.sharedLibrary}";
3222 in
3223 {
3224 postPatch = ''
3225 substituteInPlace lua/sqlite/defs.lua \
3226 --replace-fail "path = vim.g.sqlite_clib_path" "path = vim.g.sqlite_clib_path or '${lib.escapeShellArg libsqlite}'"
3227 '';
3228
3229 passthru = oa.passthru // {
3230 initLua = ''vim.g.sqlite_clib_path = "${libsqlite}"'';
3231 };
3232
3233 nvimSkipModules = [
3234 # Require "sql.utils" ?
3235 "sqlite.tbl.cache"
3236 # attempt to write to read only database
3237 "sqlite.examples.bookmarks"
3238 ];
3239 }
3240 );
3241
3242 ssr = super.ssr-nvim.overrideAttrs {
3243 dependencies = [ self.nvim-treesitter ];
3244 };
3245
3246 startup-nvim = super.startup-nvim.overrideAttrs {
3247 dependencies = [ self.plenary-nvim ];
3248 };
3249
3250 statix = buildVimPlugin rec {
3251 inherit (statix) pname src meta;
3252 version = "0.1.0";
3253 postPatch = ''
3254 # check that version is up to date
3255 grep 'pname = "statix-vim"' -A 1 flake.nix \
3256 | grep -F 'version = "${version}"'
3257
3258 cd vim-plugin
3259 substituteInPlace ftplugin/nix.vim --replace-fail statix ${statix}/bin/statix
3260 substituteInPlace plugin/statix.vim --replace-fail statix ${statix}/bin/statix
3261 '';
3262 };
3263
3264 stylish-nvim = super.stylish-nvim.overrideAttrs {
3265 postPatch = ''
3266 substituteInPlace lua/stylish/common/mouse_hover_handler.lua --replace-fail xdotool ${xdotool}/bin/xdotool
3267 substituteInPlace lua/stylish/components/menu.lua --replace-fail xdotool ${xdotool}/bin/xdotool
3268 substituteInPlace lua/stylish/components/menu.lua --replace-fail xwininfo ${xorg.xwininfo}/bin/xwininfo
3269 '';
3270 };
3271
3272 supermaven-nvim = super.supermaven-nvim.overrideAttrs {
3273 # TODO: handle supermaven binary
3274 doCheck = false;
3275 };
3276
3277 sved =
3278 let
3279 # we put the script in its own derivation to benefit the magic of wrapGAppsHook3
3280 svedbackend = stdenv.mkDerivation {
3281 name = "svedbackend-${super.sved.name}";
3282 inherit (super.sved) src;
3283 nativeBuildInputs = [
3284 wrapGAppsHook3
3285 gobject-introspection
3286 ];
3287 buildInputs = [
3288 glib
3289 (python3.withPackages (
3290 ps: with ps; [
3291 pygobject3
3292 pynvim
3293 dbus-python
3294 ]
3295 ))
3296 ];
3297 preferLocalBuild = true;
3298 installPhase = ''
3299 install -Dt $out/bin ftplugin/evinceSync.py
3300 '';
3301 };
3302 # the vim plugin expects evinceSync.py to be a python file, but it is a C wrapper
3303 pythonWrapper =
3304 writeText "evinceSync-wrapper.py" # python
3305 ''
3306 #!${python3}/bin/python3
3307 import os
3308 import sys
3309 os.execv("${svedbackend}/bin/evinceSync.py", sys.argv)
3310 '';
3311 in
3312 super.sved.overrideAttrs {
3313 preferLocalBuild = true;
3314 postPatch = ''
3315 rm ftplugin/evinceSync.py
3316 install -m 544 ${pythonWrapper} ftplugin/evinceSync.py
3317 '';
3318 meta = {
3319 description = "synctex support between vim/neovim and evince";
3320 };
3321 };
3322
3323 syntax-tree-surfer = super.syntax-tree-surfer.overrideAttrs {
3324 dependencies = [ self.nvim-treesitter ];
3325 meta.maintainers = with lib.maintainers; [ callumio ];
3326 };
3327
3328 tardis-nvim = super.tardis-nvim.overrideAttrs {
3329 dependencies = [ self.plenary-nvim ];
3330 meta.maintainers = with lib.maintainers; [ fredeb ];
3331 };
3332
3333 taskwarrior2 = buildVimPlugin {
3334 inherit (taskwarrior2) version pname;
3335 src = "${taskwarrior2.src}/scripts/vim";
3336 };
3337
3338 taskwarrior3 = buildVimPlugin {
3339 inherit (taskwarrior3) version pname;
3340 src = "${taskwarrior3.src}/scripts/vim";
3341 };
3342
3343 telekasten-nvim = super.telekasten-nvim.overrideAttrs {
3344 dependencies = with self; [
3345 plenary-nvim
3346 telescope-nvim
3347 ];
3348 };
3349
3350 telescope-asynctasks-nvim = super.telescope-asynctasks-nvim.overrideAttrs {
3351 dependencies = with self; [
3352 plenary-nvim
3353 telescope-nvim
3354 ];
3355 };
3356
3357 telescope-cheat-nvim = super.telescope-cheat-nvim.overrideAttrs {
3358 dependencies = with self; [
3359 plenary-nvim
3360 sqlite-lua
3361 telescope-nvim
3362 ];
3363 };
3364
3365 telescope-coc-nvim = super.telescope-coc-nvim.overrideAttrs {
3366 dependencies = with self; [
3367 plenary-nvim
3368 telescope-nvim
3369 ];
3370 };
3371
3372 telescope-dap-nvim = super.telescope-dap-nvim.overrideAttrs {
3373 dependencies = with self; [
3374 plenary-nvim
3375 nvim-dap
3376 telescope-nvim
3377 ];
3378 };
3379
3380 telescope-emoji-nvim = super.telescope-emoji-nvim.overrideAttrs {
3381 dependencies = [ self.telescope-nvim ];
3382 };
3383
3384 telescope-frecency-nvim = super.telescope-frecency-nvim.overrideAttrs {
3385 dependencies = with self; [
3386 sqlite-lua
3387 telescope-nvim
3388 plenary-nvim
3389 ];
3390 # Meta
3391 nvimSkipModules = "frecency.types";
3392 };
3393
3394 telescope-fzf-native-nvim = super.telescope-fzf-native-nvim.overrideAttrs {
3395 dependencies = [ self.telescope-nvim ];
3396 buildPhase = "make";
3397 meta.platforms = lib.platforms.all;
3398 };
3399
3400 telescope-fzf-writer-nvim = super.telescope-fzf-writer-nvim.overrideAttrs {
3401 dependencies = with self; [
3402 plenary-nvim
3403 telescope-nvim
3404 ];
3405 };
3406
3407 telescope-fzy-native-nvim = super.telescope-fzy-native-nvim.overrideAttrs (old: {
3408 dependencies = [ self.telescope-nvim ];
3409 preFixup =
3410 let
3411 fzy-lua-native-path = "deps/fzy-lua-native";
3412 fzy-lua-native = stdenv.mkDerivation {
3413 name = "fzy-lua-native";
3414 src = "${old.src}/${fzy-lua-native-path}";
3415 # remove pre-compiled binaries
3416 preBuild = "rm -rf static/*";
3417 installPhase = ''
3418 install -Dm 444 -t $out/static static/*
3419 install -Dm 444 -t $out/lua lua/*
3420 '';
3421 };
3422 in
3423 ''
3424 rm -rf $target/${fzy-lua-native-path}/*
3425 ln -s ${fzy-lua-native}/static $target/${fzy-lua-native-path}/static
3426 ln -s ${fzy-lua-native}/lua $target/${fzy-lua-native-path}/lua
3427 '';
3428 meta.platforms = lib.platforms.all;
3429 });
3430
3431 telescope-git-conflicts-nvim = super.telescope-git-conflicts-nvim.overrideAttrs {
3432 dependencies = with self; [
3433 plenary-nvim
3434 telescope-nvim
3435 ];
3436 };
3437
3438 telescope-github-nvim = super.telescope-github-nvim.overrideAttrs {
3439 dependencies = with self; [
3440 plenary-nvim
3441 telescope-nvim
3442 ];
3443 };
3444
3445 telescope-glyph-nvim = super.telescope-github-nvim.overrideAttrs {
3446 dependencies = [ self.telescope-nvim ];
3447 };
3448
3449 telescope-live-grep-args-nvim = super.telescope-live-grep-args-nvim.overrideAttrs {
3450 dependencies = with self; [
3451 plenary-nvim
3452 telescope-nvim
3453 ];
3454 };
3455
3456 telescope-lsp-handlers-nvim = super.telescope-lsp-handlers-nvim.overrideAttrs {
3457 dependencies = with self; [
3458 plenary-nvim
3459 telescope-nvim
3460 ];
3461 };
3462
3463 telescope-media-files-nvim = super.telescope-media-files-nvim.overrideAttrs {
3464 dependencies = with self; [
3465 telescope-nvim
3466 popup-nvim
3467 plenary-nvim
3468 ];
3469 };
3470
3471 telescope-project-nvim = super.telescope-project-nvim.overrideAttrs {
3472 dependencies = [ self.plenary-nvim ];
3473 };
3474
3475 telescope-smart-history-nvim = super.telescope-smart-history-nvim.overrideAttrs {
3476 dependencies = with self; [
3477 plenary-nvim
3478 telescope-nvim
3479 ];
3480 };
3481
3482 telescope-symbols-nvim = super.telescope-symbols-nvim.overrideAttrs {
3483 dependencies = [ self.telescope-nvim ];
3484 };
3485
3486 telescope-ui-select-nvim = super.telescope-ui-select-nvim.overrideAttrs {
3487 dependencies = [ self.telescope-nvim ];
3488 };
3489
3490 telescope-ultisnips-nvim = super.telescope-ultisnips-nvim.overrideAttrs {
3491 dependencies = with self; [
3492 plenary-nvim
3493 telescope-nvim
3494 ];
3495 };
3496
3497 telescope-undo-nvim = super.telescope-undo-nvim.overrideAttrs {
3498 dependencies = with self; [
3499 plenary-nvim
3500 telescope-nvim
3501 ];
3502 };
3503
3504 telescope-vim-bookmarks-nvim = super.telescope-vim-bookmarks-nvim.overrideAttrs {
3505 dependencies = with self; [
3506 plenary-nvim
3507 telescope-nvim
3508 ];
3509 };
3510
3511 telescope-z-nvim = super.telescope-z-nvim.overrideAttrs {
3512 dependencies = with self; [
3513 plenary-nvim
3514 telescope-nvim
3515 ];
3516 };
3517
3518 telescope-zf-native-nvim = super.telescope-zf-native-nvim.overrideAttrs {
3519 dependencies = with self; [ telescope-nvim ];
3520 };
3521
3522 telescope-zoxide = super.telescope-zoxide.overrideAttrs {
3523 dependencies = with self; [ telescope-nvim ];
3524
3525 buildInputs = [ zoxide ];
3526
3527 postPatch = ''
3528 substituteInPlace lua/telescope/_extensions/zoxide/config.lua \
3529 --replace-fail "zoxide query -ls" "${zoxide}/bin/zoxide query -ls"
3530 '';
3531 };
3532
3533 text-case-nvim = super.text-case-nvim.overrideAttrs {
3534 nvimSkipModules = [
3535 # some leftover from development
3536 "textcase.plugin.range"
3537 ];
3538 };
3539
3540 timerly = super.timerly.overrideAttrs {
3541 dependencies = [ self.nvzone-volt ];
3542 };
3543
3544 tmux-complete-vim = super.tmux-complete-vim.overrideAttrs {
3545 # Vim plugin with optional nvim-compe lua module
3546 nvimSkipModules = [ "compe_tmux" ];
3547 };
3548
3549 todo-comments-nvim = super.todo-comments-nvim.overrideAttrs {
3550 checkInputs = with self; [
3551 # Optional trouble integration
3552 trouble-nvim
3553 ];
3554 dependencies = [ self.plenary-nvim ];
3555 nvimSkipModules = [
3556 # Optional fzf-lua integration
3557 # fzf-lua server must be running
3558 "todo-comments.fzf"
3559 ];
3560 };
3561
3562 tokyonight-nvim = super.tokyonight-nvim.overrideAttrs {
3563 checkInputs = [ self.fzf-lua ];
3564 nvimSkipModules = [
3565 # Meta file
3566 "tokyonight.docs"
3567 # Optional integration
3568 "tokyonight.extra.fzf"
3569 ];
3570 };
3571
3572 triptych-nvim = super.triptych-nvim.overrideAttrs {
3573 dependencies = [ self.plenary-nvim ];
3574 };
3575
3576 trouble-nvim = super.trouble-nvim.overrideAttrs {
3577 # Meta file
3578 nvimSkipModules = "trouble.docs";
3579 };
3580
3581 tsc-nvim = super.tsc-nvim.overrideAttrs {
3582 patches = [ ./patches/tsc.nvim/fix-path.patch ];
3583
3584 postPatch = ''
3585 substituteInPlace lua/tsc/utils.lua --replace-fail '@tsc@' ${typescript}/bin/tsc
3586 '';
3587
3588 # Unit test
3589 nvimSkipModules = "tsc.better-messages-test";
3590 };
3591
3592 tssorter-nvim = super.tssorter-nvim.overrideAttrs {
3593 dependencies = [ self.nvim-treesitter ];
3594 };
3595
3596 tup =
3597 let
3598 # Based on the comment at the top of https://github.com/gittup/tup/blob/master/contrib/syntax/tup.vim
3599 ftdetect = builtins.toFile "tup.vim" ''
3600 au BufNewFile,BufRead Tupfile,*.tup setf tup
3601 '';
3602 in
3603 buildVimPlugin {
3604 inherit (tup) pname version src;
3605 preInstall = ''
3606 mkdir -p vim-plugin/syntax vim-plugin/ftdetect
3607 cp contrib/syntax/tup.vim vim-plugin/syntax/tup.vim
3608 cp "${ftdetect}" vim-plugin/ftdetect/tup.vim
3609 cd vim-plugin
3610 '';
3611 meta.maintainers = with lib.maintainers; [ enderger ];
3612 };
3613
3614 typescript-nvim = super.typescript-nvim.overrideAttrs {
3615 checkInputs = [
3616 # Optional null-ls integration
3617 self.none-ls-nvim
3618 ];
3619 dependencies = with self; [
3620 nvim-lspconfig
3621 ];
3622 };
3623
3624 typescript-tools-nvim = super.typescript-tools-nvim.overrideAttrs {
3625 dependencies = with self; [
3626 nvim-lspconfig
3627 plenary-nvim
3628 ];
3629 runtimeDeps = [
3630 typescript-language-server
3631 ];
3632 };
3633
3634 typst-preview-nvim = super.typst-preview-nvim.overrideAttrs {
3635 postPatch = ''
3636 substituteInPlace lua/typst-preview/config.lua \
3637 --replace-fail "['tinymist'] = nil," "tinymist = '${lib.getExe tinymist}'," \
3638 --replace-fail "['websocat'] = nil," "websocat = '${lib.getExe websocat}',"
3639 '';
3640
3641 };
3642
3643 unicode-vim =
3644 let
3645 unicode-data = fetchurl {
3646 url = "http://www.unicode.org/Public/UNIDATA/UnicodeData.txt";
3647 sha256 = "16b0jzvvzarnlxdvs2izd5ia0ipbd87md143dc6lv6xpdqcs75s9";
3648 };
3649 in
3650 super.unicode-vim.overrideAttrs (oa: {
3651 # redirect to /dev/null else changes terminal color
3652 buildPhase = ''
3653 cp "${unicode-data}" autoload/unicode/UnicodeData.txt
3654 echo "Building unicode cache"
3655 ${vim}/bin/vim --cmd ":set rtp^=$PWD" -c 'ru plugin/unicode.vim' -c 'UnicodeCache' -c ':echohl Normal' -c ':q' > /dev/null
3656 '';
3657
3658 passthru = oa.passthru // {
3659
3660 initLua = ''vim.g.Unicode_data_directory="${self.unicode-vim}/autoload/unicode"'';
3661 };
3662 });
3663
3664 unison = super.unison.overrideAttrs {
3665 # Editor stuff isn't at top level
3666 postPatch = "cd editor-support/vim";
3667 };
3668
3669 uv-nvim = super.uv-nvim.overrideAttrs {
3670 dependencies = with self; [
3671 telescope-nvim
3672 ];
3673 runtimeDeps = [ uv ];
3674 };
3675
3676 vCoolor-vim = super.vCoolor-vim.overrideAttrs {
3677 # on linux can use either Zenity or Yad.
3678 propagatedBuildInputs = [ zenity ];
3679 meta = {
3680 description = "Simple color selector/picker plugin";
3681 license = lib.licenses.publicDomain;
3682 };
3683 };
3684
3685 vimacs = super.vimacs.overrideAttrs {
3686 buildPhase = ''
3687 substituteInPlace bin/vim \
3688 --replace-fail '/usr/bin/vim' 'vim' \
3689 --replace-fail '/usr/bin/gvim' 'gvim'
3690 # remove unnecessary duplicated bin wrapper script
3691 rm -r plugin/vimacs
3692 '';
3693 meta = with lib; {
3694 description = "Vim-Improved eMACS: Emacs emulation plugin for Vim";
3695 homepage = "http://algorithm.com.au/code/vimacs";
3696 license = licenses.gpl2Plus;
3697 maintainers = with lib.maintainers; [ millerjason ];
3698 };
3699 };
3700
3701 vimade = super.vimade.overrideAttrs {
3702 checkInputs = with self; [
3703 # Optional providers
3704 hlchunk-nvim
3705 mini-nvim
3706 snacks-nvim
3707 ];
3708 };
3709
3710 vimsence = super.vimsence.overrideAttrs {
3711 meta = with lib; {
3712 description = "Discord rich presence for Vim";
3713 homepage = "https://github.com/hugolgst/vimsence";
3714 maintainers = with lib.maintainers; [ hugolgst ];
3715 };
3716 };
3717
3718 vimproc-vim = super.vimproc-vim.overrideAttrs {
3719 buildInputs = [ which ];
3720
3721 # TODO: revisit
3722 buildPhase = ''
3723 substituteInPlace autoload/vimproc.vim \
3724 --replace-fail vimproc_mac.so vimproc_unix.so \
3725 --replace-fail vimproc_linux64.so vimproc_unix.so \
3726 --replace-fail vimproc_linux32.so vimproc_unix.so
3727 make -f make_unix.mak
3728 '';
3729 };
3730
3731 vimshell-vim = super.vimshell-vim.overrideAttrs {
3732 dependencies = [ self.vimproc-vim ];
3733 };
3734
3735 vim-addon-actions = super.vim-addon-actions.overrideAttrs {
3736 dependencies = with self; [
3737 vim-addon-mw-utils
3738 tlib_vim
3739 ];
3740 };
3741
3742 vim-addon-async = super.vim-addon-async.overrideAttrs {
3743 dependencies = [ self.vim-addon-signs ];
3744 };
3745
3746 vim-addon-background-cmd = super.vim-addon-background-cmd.overrideAttrs {
3747 dependencies = [ self.vim-addon-mw-utils ];
3748 };
3749
3750 vim-addon-completion = super.vim-addon-completion.overrideAttrs {
3751 dependencies = [ self.tlib_vim ];
3752 };
3753
3754 vim-addon-goto-thing-at-cursor = super.vim-addon-goto-thing-at-cursor.overrideAttrs {
3755 dependencies = [ self.tlib_vim ];
3756 };
3757
3758 vim-addon-mru = super.vim-addon-mru.overrideAttrs {
3759 dependencies = with self; [
3760 vim-addon-other
3761 vim-addon-mw-utils
3762 ];
3763 };
3764
3765 vim-addon-nix = super.vim-addon-nix.overrideAttrs {
3766 dependencies = with self; [
3767 vim-addon-completion
3768 vim-addon-goto-thing-at-cursor
3769 vim-addon-errorformats
3770 vim-addon-actions
3771 vim-addon-mw-utils
3772 tlib_vim
3773 ];
3774 };
3775
3776 vim-addon-sql = super.vim-addon-sql.overrideAttrs {
3777 dependencies = with self; [
3778 vim-addon-completion
3779 vim-addon-background-cmd
3780 tlib_vim
3781 ];
3782 };
3783
3784 vim-addon-syntax-checker = super.vim-addon-syntax-checker.overrideAttrs {
3785 dependencies = with self; [
3786 vim-addon-mw-utils
3787 tlib_vim
3788 ];
3789 };
3790
3791 vim-addon-toggle-buffer = super.vim-addon-toggle-buffer.overrideAttrs {
3792 dependencies = with self; [
3793 vim-addon-mw-utils
3794 tlib_vim
3795 ];
3796 };
3797
3798 vim-addon-xdebug = super.vim-addon-xdebug.overrideAttrs {
3799 dependencies = with self; [
3800 webapi-vim
3801 vim-addon-mw-utils
3802 vim-addon-signs
3803 vim-addon-async
3804 ];
3805 };
3806
3807 vim-agda = super.vim-agda.overrideAttrs {
3808 preFixup = ''
3809 substituteInPlace "$out"/autoload/agda.vim \
3810 --replace-fail "jobstart(['agda'" "jobstart(['${agda}/bin/agda'"
3811 '';
3812 };
3813
3814 vim-apm = super.vim-apm.overrideAttrs {
3815 nvimSkipModules = [ "run" ];
3816 };
3817
3818 vim-bazel = super.vim-bazel.overrideAttrs {
3819 dependencies = [ self.vim-maktaba ];
3820 };
3821
3822 vim-beancount = super.vim-beancount.overrideAttrs {
3823 passthru.python3Dependencies = ps: with ps; [ beancount ];
3824 };
3825
3826 vim-codefmt = super.vim-codefmt.overrideAttrs {
3827 dependencies = [ self.vim-maktaba ];
3828 };
3829
3830 # Due to case-sensitivity issues, the hash differs on Darwin systems, see:
3831 # https://github.com/NixOS/nixpkgs/issues/157609
3832 vim-colorschemes = super.vim-colorschemes.overrideAttrs (old: {
3833 src = old.src.overrideAttrs (srcOld: {
3834 postFetch =
3835 (srcOld.postFetch or "")
3836 + lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
3837 rm $out/colors/darkBlue.vim
3838 '';
3839 });
3840 });
3841
3842 vim-dadbod-ui = super.vim-dadbod-ui.overrideAttrs {
3843 dependencies = [ self.vim-dadbod ];
3844
3845 doInstallCheck = true;
3846 vimCommandCheck = "DBUI";
3847 };
3848
3849 vim-dasht = super.vim-dasht.overrideAttrs {
3850 preFixup = ''
3851 substituteInPlace $out/autoload/dasht.vim \
3852 --replace-fail "['dasht']" "['${dasht}/bin/dasht']"
3853 '';
3854 };
3855
3856 vim-easytags = super.vim-easytags.overrideAttrs {
3857 dependencies = [ self.vim-misc ];
3858 patches = [
3859 (fetchpatch {
3860 # https://github.com/xolox/vim-easytags/pull/170 fix version detection for universal-ctags
3861 url = "https://github.com/xolox/vim-easytags/commit/46e4709500ba3b8e6cf3e90aeb95736b19e49be9.patch";
3862 sha256 = "0x0xabb56xkgdqrg1mpvhbi3yw4d829n73lsnnyj5yrxjffy4ax4";
3863 })
3864 ];
3865 };
3866
3867 vim-flog = super.vim-flog.overrideAttrs {
3868 # Not intended to be required, used by vim plugin
3869 nvimSkipModules = "flog.graph_bin";
3870 };
3871
3872 vim-fzf-coauthorship = super.vim-fzf-coauthorship.overrideAttrs {
3873 dependencies = with self; [ fzf-vim ];
3874 };
3875
3876 # change the go_bin_path to point to a path in the nix store. See the code in
3877 # fatih/vim-go here
3878 # https://github.com/fatih/vim-go/blob/155836d47052ea9c9bac81ba3e937f6f22c8e384/autoload/go/path.vim#L154-L159
3879 vim-go =
3880 let
3881 binPath = lib.makeBinPath [
3882 asmfmt
3883 delve
3884 errcheck
3885 go-motion
3886 go-tools # contains staticcheck, keyify
3887 gocode-gomod
3888 godef
3889 gogetdoc
3890 golint
3891 golangci-lint
3892 gomodifytags
3893 gopls
3894 gotags
3895 gotools # contains guru, gorename
3896 iferr
3897 impl
3898 reftools
3899 revive
3900 ];
3901 in
3902 super.vim-go.overrideAttrs {
3903 postPatch = ''
3904 sed -i autoload/go/config.vim -Ee 's@"go_bin_path", ""@"go_bin_path", "${binPath}"@g'
3905 '';
3906 };
3907
3908 vim-gist = super.vim-gist.overrideAttrs {
3909 dependencies = [ self.webapi-vim ];
3910 };
3911
3912 vim-grammarous = super.vim-grammarous.overrideAttrs {
3913 # use `:GrammarousCheck` to initialize checking
3914 # In neovim, you also want to use set
3915 # let g:grammarous#show_first_error = 1
3916 # see https://github.com/rhysd/vim-grammarous/issues/39
3917 patches = [
3918 (replaceVars ./patches/vim-grammarous/set_default_languagetool.patch {
3919 inherit languagetool;
3920 })
3921 ];
3922 };
3923
3924 vim-hexokinase = super.vim-hexokinase.overrideAttrs (old: {
3925 preFixup =
3926 let
3927 hexokinase = buildGoModule {
3928 name = "hexokinase";
3929 src = old.src + "/hexokinase";
3930 vendorHash = null;
3931 };
3932 in
3933 ''
3934 ln -s ${hexokinase}/bin/hexokinase $target/hexokinase/hexokinase
3935 '';
3936
3937 meta.platforms = lib.platforms.all;
3938 });
3939
3940 vim-hier = super.vim-hier.overrideAttrs {
3941 buildInputs = [ vim ];
3942 };
3943
3944 vim-illuminate = super.vim-illuminate.overrideAttrs {
3945 # Optional treesitter integration
3946 checkInputs = [ self.nvim-treesitter ];
3947 };
3948
3949 vim-isort = super.vim-isort.overrideAttrs {
3950 # Code updated to find relative path at runtime
3951 # https://github.com/fisadev/vim-isort/pull/41
3952 dontCheckForBrokenSymlinks = true;
3953 postPatch = ''
3954 substituteInPlace ftplugin/python_vimisort.vim \
3955 --replace-fail 'import vim' 'import vim; import sys; sys.path.append("${python3.pkgs.isort}/${python3.sitePackages}")'
3956 '';
3957 };
3958
3959 vim-matchup = super.vim-matchup.overrideAttrs {
3960 # Optional treesitter integration
3961 nvimSkipModules = "treesitter-matchup.third-party.query";
3962 };
3963
3964 vim-mediawiki-editor = super.vim-mediawiki-editor.overrideAttrs {
3965 passthru.python3Dependencies = [ python3.pkgs.mwclient ];
3966 };
3967
3968 vim-metamath = super.vim-metamath.overrideAttrs {
3969 preInstall = "cd vim";
3970 };
3971
3972 vim-pluto = super.vim-pluto.overrideAttrs {
3973 dependencies = [ self.denops-vim ];
3974 };
3975
3976 vim-sensible = super.vim-sensible.overrideAttrs {
3977 patches = [ ./patches/vim-sensible/fix-nix-store-path-regex.patch ];
3978 };
3979
3980 vim-snipmate = super.vim-snipmate.overrideAttrs {
3981 dependencies = with self; [
3982 vim-addon-mw-utils
3983 tlib_vim
3984 ];
3985 };
3986
3987 vim-speeddating = super.vim-speeddating.overrideAttrs {
3988 dependencies = [ self.vim-repeat ];
3989 };
3990
3991 vim-stylish-haskell = super.vim-stylish-haskell.overrideAttrs (old: {
3992 postPatch = old.postPatch or "" + ''
3993 substituteInPlace ftplugin/haskell/stylish-haskell.vim --replace-fail \
3994 'g:stylish_haskell_command = "stylish-haskell"' \
3995 'g:stylish_haskell_command = "${stylish-haskell}/bin/stylish-haskell"'
3996 '';
3997 });
3998
3999 vim-surround = super.vim-surround.overrideAttrs {
4000 dependencies = [ self.vim-repeat ];
4001 };
4002
4003 vim-tabby = super.vim-tabby.overrideAttrs {
4004 };
4005
4006 vim-textobj-entire = super.vim-textobj-entire.overrideAttrs {
4007 dependencies = [ self.vim-textobj-user ];
4008 meta.maintainers = with lib.maintainers; [ workflow ];
4009 };
4010
4011 vim-tpipeline = super.vim-tpipeline.overrideAttrs {
4012 # Requires global variable
4013 nvimSkipModules = "tpipeline.main";
4014 };
4015
4016 vim-ultest = super.vim-ultest.overrideAttrs {
4017 # NOTE: vim-ultest is no longer maintained.
4018 # If using Neovim, you can switch to using neotest (https://github.com/nvim-neotest/neotest) instead.
4019 nvimSkipModules = [ "ultest" ];
4020 };
4021
4022 vim-unimpaired = super.vim-unimpaired.overrideAttrs {
4023 dependencies = [ self.vim-repeat ];
4024 };
4025
4026 vim-wakatime = super.vim-wakatime.overrideAttrs {
4027 buildInputs = [ python3 ];
4028 patchPhase = ''
4029 substituteInPlace plugin/wakatime.vim \
4030 --replace-fail 'autocmd BufEnter,VimEnter' \
4031 'autocmd VimEnter' \
4032 --replace-fail 'autocmd CursorHold,CursorHoldI' \
4033 'autocmd CursorHold,CursorHoldI,BufEnter'
4034 '';
4035 };
4036
4037 vim-xdebug = super.vim-xdebug.overrideAttrs {
4038 postInstall = null;
4039 };
4040
4041 vim-xkbswitch = super.vim-xkbswitch.overrideAttrs {
4042 buildInputs = [ xkb-switch ];
4043 };
4044
4045 vim-yapf = super.vim-yapf.overrideAttrs {
4046 buildPhase = ''
4047 substituteInPlace ftplugin/python_yapf.vim \
4048 --replace-fail '"yapf"' '"${python3.pkgs.yapf}/bin/yapf"'
4049 '';
4050 };
4051
4052 vim-zettel = super.vim-zettel.overrideAttrs {
4053 dependencies = with self; [
4054 vimwiki
4055 fzf-vim
4056 ];
4057 };
4058
4059 virt-column-nvim = super.virt-column-nvim.overrideAttrs {
4060 # Meta file
4061 nvimSkipModules = "virt-column.config.types";
4062 };
4063
4064 vs-tasks-nvim = super.vs-tasks-nvim.overrideAttrs {
4065 dependencies = with self; [
4066 plenary-nvim
4067 telescope-nvim
4068 ];
4069 };
4070
4071 which-key-nvim = super.which-key-nvim.overrideAttrs {
4072 nvimSkipModules = [ "which-key.docs" ];
4073 };
4074
4075 whichpy-nvim = super.whichpy-nvim.overrideAttrs {
4076 checkInputs = [
4077 # Optional telescope integration
4078 self.telescope-nvim
4079 ];
4080 };
4081
4082 wiki-vim = super.wiki-vim.overrideAttrs {
4083 checkInputs = [
4084 # Optional telescope integration
4085 self.telescope-nvim
4086 ];
4087 };
4088
4089 windows-nvim = super.windows-nvim.overrideAttrs {
4090 dependencies = with self; [
4091 middleclass
4092 animation-nvim
4093 ];
4094 nvimSkipModules = [
4095 # Animation doesn't work headless
4096 "windows.autowidth"
4097 "windows.commands"
4098 ];
4099 };
4100
4101 wtf-nvim = super.wtf-nvim.overrideAttrs {
4102 dependencies = with self; [
4103 nui-nvim
4104 plenary-nvim
4105 ];
4106 };
4107
4108 xmake-nvim = super.xmake-nvim.overrideAttrs {
4109 nvimSkipModule = [
4110 # attempt to index upvalue 'options' (a nil value)
4111 "xmake.action"
4112 "xmake.command"
4113 "xmake.runner_wrapper"
4114 ];
4115 };
4116
4117 yaml-companion-nvim = super.yaml-companion-nvim.overrideAttrs {
4118 dependencies = [
4119 self.nvim-lspconfig
4120 self.plenary-nvim
4121 ];
4122 };
4123
4124 yaml-schema-detect-nvim = super.yaml-schema-detect-nvim.overrideAttrs {
4125 dependencies = with self; [
4126 plenary-nvim
4127 nvim-lspconfig
4128 ];
4129 };
4130
4131 yanky-nvim = super.yanky-nvim.overrideAttrs {
4132 checkInputs = with self; [
4133 # Optional telescope integration
4134 telescope-nvim
4135 ];
4136 };
4137
4138 yazi-nvim = super.yazi-nvim.overrideAttrs {
4139 dependencies = [ self.plenary-nvim ];
4140 nvimSkipModules = [
4141 # Used for reproducing issues
4142 "repro"
4143 ];
4144 };
4145
4146 YouCompleteMe = super.YouCompleteMe.overrideAttrs {
4147 buildPhase = ''
4148 substituteInPlace plugin/youcompleteme.vim \
4149 --replace-fail "'ycm_path_to_python_interpreter', '''" \
4150 "'ycm_path_to_python_interpreter', '${python3}/bin/python3'"
4151
4152 rm -r third_party/ycmd
4153 ln -s ${ycmd}/lib/ycmd third_party
4154 '';
4155
4156 meta = with lib; {
4157 description = "Code-completion engine for Vim";
4158 homepage = "https://github.com/Valloric/YouCompleteMe";
4159 license = licenses.gpl3;
4160 maintainers = with maintainers; [
4161 marcweber
4162 jagajaga
4163 mel
4164 ];
4165 platforms = platforms.unix;
4166 };
4167 };
4168
4169 zenbones-nvim = super.zenbones-nvim.overrideAttrs {
4170 nvimSkipModules = [
4171 # Requires global variable set
4172 "randombones"
4173 "randombones.palette"
4174 # Optional shipwright
4175 "zenbones.shipwright.runners.alacritty"
4176 "zenbones.shipwright.runners.foot"
4177 "zenbones.shipwright.runners.iterm"
4178 "zenbones.shipwright.runners.kitty"
4179 "zenbones.shipwright.runners.lightline"
4180 "zenbones.shipwright.runners.lualine"
4181 "zenbones.shipwright.runners.tmux"
4182 "zenbones.shipwright.runners.vim"
4183 "zenbones.shipwright.runners.wezterm"
4184 "zenbones.shipwright.runners.windows_terminal"
4185 # Optional lush-nvim integration
4186 "duckbones"
4187 "duckbones.palette"
4188 "forestbones"
4189 "forestbones.palette"
4190 "kanagawabones"
4191 "kanagawabones.palette"
4192 "neobones"
4193 "neobones.palette"
4194 "nordbones"
4195 "nordbones.palette"
4196 "rosebones"
4197 "rosebones.palette"
4198 "seoulbones"
4199 "seoulbones.palette"
4200 "tokyobones"
4201 "tokyobones.palette"
4202 "vimbones"
4203 "vimbones.palette"
4204 "zenbones"
4205 "zenbones.palette"
4206 "zenbones.specs.dark"
4207 "zenbones.specs.light"
4208 "zenburned"
4209 "zenburned.palette"
4210 "zenwritten"
4211 "zenwritten.palette"
4212 ];
4213 };
4214
4215 zk-nvim = super.zk-nvim.overrideAttrs {
4216 checkInputs = with self; [
4217 # Optional pickers
4218 fzf-lua
4219 mini-nvim
4220 snacks-nvim
4221 telescope-nvim
4222 ];
4223 };
4224
4225 zotcite = super.zotcite.overrideAttrs {
4226 dependencies = with self; [
4227 plenary-nvim
4228 telescope-nvim
4229 ];
4230 };
4231
4232 zoxide-vim = super.zoxide-vim.overrideAttrs {
4233 buildInputs = [ zoxide ];
4234
4235 postPatch = ''
4236 substituteInPlace autoload/zoxide.vim \
4237 --replace-fail "'zoxide_executable', 'zoxide'" "'zoxide_executable', '${zoxide}/bin/zoxide'"
4238 '';
4239 };
4240
4241 nvim-k8s-crd = super.nvim-k8s-crd.overrideAttrs {
4242 dependencies = with self; [
4243 plenary-nvim
4244 nvim-lspconfig
4245 ];
4246 };
4247}