neovim.nix 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. { lib
  2. , writeTextFile
  3. , neovim
  4. , fd
  5. , ripgrep
  6. , nodePackages
  7. , vimPlugins
  8. , withPlayground ? false
  9. }:
  10. let
  11. extra-treesitter-textobjects = writeTextFile {
  12. name = "extra-treesitter-textobjects";
  13. destination = "/after/queries/javascript/textobjects.scm";
  14. text = ''
  15. ; support swapping elements inside arrays too
  16. (array "," . (_) @parameter.inner)
  17. (array . (_) @parameter.inner ",")
  18. '';
  19. };
  20. extraPath = [
  21. fd
  22. ripgrep
  23. nodePackages.typescript-language-server
  24. nodePackages.eslint_d
  25. ];
  26. in
  27. neovim.override {
  28. extraMakeWrapperArgs = "--prefix PATH : ${lib.makeBinPath extraPath}";
  29. configure = {
  30. customRC = ''
  31. source ${./settings.lua}
  32. source ${./plugins.lua}
  33. source ${./mappings.lua}
  34. source ${./autocmd.lua}
  35. source ${./lsp.lua}
  36. source ${./theme.lua}
  37. '' + lib.optionalString withPlayground ''
  38. source ${./playground.lua}
  39. '';
  40. packages.myVimPackage = with vimPlugins; {
  41. start = [
  42. vim-sensible
  43. vim-sleuth
  44. vim-fugitive
  45. vim-surround
  46. vim-abolish
  47. undotree
  48. telescope-nvim
  49. telescope-fzf-native-nvim
  50. mini-nvim
  51. gitsigns-nvim
  52. sonokai
  53. (nvim-treesitter.withPlugins (p: with p; [
  54. tree-sitter-bash
  55. tree-sitter-css
  56. tree-sitter-go
  57. tree-sitter-javascript
  58. tree-sitter-json
  59. tree-sitter-lua
  60. tree-sitter-nix
  61. tree-sitter-ruby
  62. tree-sitter-tsx
  63. tree-sitter-typescript
  64. ] ++ lib.optionals withPlayground [
  65. tree-sitter-query
  66. ]))
  67. nvim-treesitter-textobjects
  68. extra-treesitter-textobjects
  69. nvim-lspconfig
  70. nvim-lsp-ts-utils
  71. null-ls-nvim
  72. fidget-nvim
  73. ] ++ lib.optionals withPlayground [
  74. playground
  75. ];
  76. };
  77. };
  78. }