Advertisement
Guest User

neovim.nix

a guest
Jun 14th, 2024
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.36 KB | None | 0 0
  1. { pkgs, mylib, lib, ... }:
  2. let
  3. inherit (pkgs) unstable;
  4. inherit (unstable) vimPlugins;
  5. in
  6. {
  7. xdg.configFile =
  8. {
  9. nvim-lua = {
  10. enable = true;
  11. recursive = true;
  12. source = mylib.relativeToConfD "neovim/lua";
  13. target = "nvim/lua";
  14. };
  15. nvim-snippets = {
  16. enable = true;
  17. recursive = true;
  18. source = mylib.relativeToConfD "neovim/snippets";
  19. target = "nvim/snippets";
  20. };
  21. };
  22.  
  23. programs.neovim = lib.mkMerge [
  24. {
  25. enable = true;
  26. package = unstable.neovim-unwrapped;
  27. defaultEditor = true;
  28. viAlias = true;
  29. vimAlias = true;
  30. withNodeJs = false;
  31. withPython3 = false;
  32. withRuby = false;
  33. extraPackages = with unstable; [ ripgrep ];
  34. plugins = with vimPlugins; [ vim-fugitive vim-cool ];
  35. extraLuaConfig = builtins.readFile (mylib.relativeToConfD "neovim/init.lua");
  36. }
  37.  
  38. (mylib.myMkPlugin {
  39. plugin = vimPlugins.nvim-lspconfig;
  40. requires = with vimPlugins; [ cmp-nvim-lsp pkgs.myVimPlugins.lazydev ];
  41. extraNodePackages = with unstable; [ typescript nodePackages.volar ];
  42. extraPackages = with unstable; [
  43. nil
  44. lua-language-server
  45. nodePackages.volar
  46. nodePackages.typescript-language-server
  47. nodePackages.bash-language-server
  48.  
  49. pkgs.myNodePkgs.vtsls
  50. ];
  51. runtime."after/plugin/lsp.lua".source = mylib.relativeToConfD "neovim/after/plugin/lsp.lua";
  52. })
  53.  
  54. (mylib.myMkPlugin {
  55. plugin = vimPlugins.mini-nvim;
  56. runtime."after/plugin/mini.lua".source = mylib.relativeToConfD "neovim/after/plugin/mini.lua";
  57. initPre = /** lua **/''
  58. -- NOTE(2024-06-13): loading this first so we start with mini notify enabled
  59. local is_debug = string.lower(vim.env.DEBUG) == "true" or string.lower(vim.env.NVIM_DEBUG) == "true"
  60. local default_duration = 3000
  61. local long_duration = 5000
  62. local disabled_duration = 0
  63. local debug_duration = is_debug and long_duration or disabled_duration
  64.  
  65. vim.notify = require("mini.notify").make_notify({
  66. ERROR = { duration = long_duration, hl_group = "DiagnosticError" },
  67. WARN = { duration = default_duration, hl_group = "DiagnosticWarn" },
  68. INFO = { duration = default_duration, hl_group = "DiagnosticInfo" },
  69. DEBUG = { duration = debug_duration, hl_group = "DiagnosticHint" },
  70. TRACE = { duration = disabled_duration, hl_group = "DiagnosticOk" },
  71. OFF = { duration = disabled_duration, hl_group = "MiniNotifyNormal" },
  72. })
  73. '';
  74. })
  75.  
  76. (mylib.myMkPlugin {
  77. plugin = vimPlugins.oil-nvim;
  78. runtime."after/plugin/oil.lua".source = mylib.relativeToConfD "neovim/after/plugin/oil.lua";
  79. initPre = ''vim.has = vim.fn.has''; # fixes oil nvim, see https://github.com/stevearc/oil.nvim/pull/411
  80. })
  81.  
  82. (mylib.myMkPlugin {
  83. plugin = vimPlugins.comment-nvim;
  84. runtime."after/plugin/comment.lua".source = mylib.relativeToConfD "neovim/after/plugin/comment.lua";
  85. })
  86.  
  87. (mylib.myMkPlugin {
  88. plugin = vimPlugins.fzf-lua;
  89. requires = with vimPlugins; [ nvim-web-devicons ];
  90. extraPackages = with unstable; [ fzf ripgrep fd bat ];
  91. runtime."after/plugin/fzf.lua".source = mylib.relativeToConfD "neovim/after/plugin/fzf.lua";
  92. })
  93.  
  94. (mylib.myMkPlugin {
  95. plugin = vimPlugins.nvim-treesitter.withPlugins (p: [
  96. p.bash
  97. p.comment
  98. p.diff
  99. p.fish
  100. p.git_config
  101. p.git_rebase
  102. p.gitattributes
  103. p.gitcommit
  104. p.gitignore
  105. p.html
  106. p.ini
  107. p.javascript
  108. p.lua
  109. p.luadoc
  110. p.markdown
  111. p.nix
  112. p.python
  113. p.query
  114. p.toml
  115. p.vim
  116. p.vimdoc
  117. p.vue
  118. p.yaml
  119. ]);
  120. runtime."after/plugin/treesitter.lua".source = mylib.relativeToConfD "neovim/after/plugin/treesitter.lua";
  121. })
  122.  
  123. (mylib.myMkPlugin {
  124. plugin = vimPlugins.nvim-ufo;
  125. requires = with vimPlugins; [ promise-async ];
  126. runtime."after/plugin/ufo.lua".source = mylib.relativeToConfD "neovim/after/plugin/ufo.lua";
  127. })
  128.  
  129. (mylib.myMkPlugin {
  130. plugin = vimPlugins.nvim-bqf;
  131. runtime."after/plugin/bqf.lua".source = mylib.relativeToConfD "neovim/after/plugin/bqf.lua";
  132. })
  133.  
  134. (mylib.myMkPlugin {
  135. plugin = vimPlugins.conform-nvim;
  136. extraPackages = with unstable; [ nixpkgs-fmt stylua shfmt shellcheck ];
  137. runtime."after/plugin/conform.lua".source = mylib.relativeToConfD "neovim/after/plugin/conform.lua";
  138. })
  139.  
  140. (mylib.myMkPlugin {
  141. plugin = vimPlugins.luasnip;
  142. extraLuaPackages = lp: [ lp.jsregexp ];
  143. runtime."after/plugin/luasnip.lua".source = mylib.relativeToConfD "neovim/after/plugin/luasnip.lua";
  144. })
  145.  
  146. (mylib.myMkPlugin {
  147. plugin = vimPlugins.nvim-cmp;
  148. requires = with vimPlugins; [ cmp-path cmp-buffer cmp_luasnip cmp-nvim-lsp luasnip ];
  149. runtime."after/plugin/cmp.lua".source = mylib.relativeToConfD "neovim/after/plugin/cmp.lua";
  150. })
  151.  
  152. (mylib.myMkPlugin {
  153. plugin = vimPlugins.nvim-lint;
  154. extraPackages = with unstable; [ deadnix statix selene shellcheck ];
  155. runtime."after/plugin/lint.lua".source = mylib.relativeToConfD "neovim/after/plugin/lint.lua";
  156. })
  157. ];
  158. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement