neovim.nix 2.5 KB

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