Enable neovim through home-manager
- We need to set the default editor to just "nvim" not a particular path, as
this allows us to override nvim in our home
- Add the mapleader bind to the start of init.vim
- As the leader is interpreted whenever we make a keybind, we must have it at
the start or it won't be respected for some of our keybinds (but will be for
others)
- Package the scrollbar plugin and install it
- Setup configs for stuff like treesitter, theme, COC, scrollbar etc.
- Add git capabilities to neovim
- Install fugitive, gitgutter and git-conflict, along with some other basic git
stuff
- Allow mouse control in neovim
diff --git a/modules/neovim/coc/default.nix b/modules/neovim/coc/default.nix
new file mode 100644
index 0000000..fc6f72d
--- /dev/null
+++ b/modules/neovim/coc/default.nix
@@ -0,0 +1,47 @@
+{
+ pkgs,
+ lib,
+ ...
+}: {
+ programs.neovim = {
+ coc = {
+ enable = true;
+ settings = {
+ "suggest.noselect" = false;
+ "cSpell.checkOnlyEnabledfileTypes" = false;
+ "rust-analyzer.serverPath" = "${pkgs.rust-analyzer}/bin/rust-analyzer";
+ languageserver = {
+ nix = {
+ command = "${pkgs.rnix-lsp}/bin/rnix-lsp";
+ filetypes = ["nix"];
+ };
+ };
+ };
+ };
+ plugins = with pkgs.vimPlugins; [
+ # Language servers
+ coc-tsserver
+ coc-eslint
+ coc-rust-analyzer
+ coc-json
+ coc-jest
+ coc-css
+
+ # Spellchecker
+ coc-spell-checker # FIXME: Broken in upstream, needs an overlay
+
+ # File explorer
+ coc-explorer
+ coc-git # TODO: Check if coc-git is still needed
+
+ # Snippet completion
+ coc-snippets
+ vim-snippets
+ ];
+ extraConfig = lib.pipe [./keybinds.vim ./theme.vim] [
+ (map builtins.readFile)
+ (builtins.concatStringsSep "\n")
+ ];
+ extraPackages = [pkgs.nodejs pkgs.rustc];
+ };
+}