neovim.nix 2.2 KB

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