blob: 4248655040e47b0f666567449249c3d528aa58a6 [file] [log] [blame]
Skyler Greya7feb6e2022-08-26 06:51:55 +01001{
2 pkgs,
Skyler Grey2f9904e2022-09-05 03:18:02 +01003 system,
Skyler Greya7feb6e2022-08-26 06:51:55 +01004 lib,
Skyler Grey2f9904e2022-09-05 03:18:02 +01005 nixpkgs-minion,
Skyler Grey55f84552022-09-05 11:04:39 +01006 home,
Skyler Greya7feb6e2022-08-26 06:51:55 +01007 ...
8}: {
9 programs.neovim = {
10 coc = {
11 enable = true;
12 settings = {
13 "suggest.noselect" = false;
14 "cSpell.checkOnlyEnabledfileTypes" = false;
Skyler Grey55f84552022-09-05 11:04:39 +010015 "cSpell.dictionaryDefinitions" = [
16 {
17 name = "imperative";
18 path = "${home.home.homeDirectory}/.local/share/cspell/dictionary.txt";
19 }
20 ];
21 "cSpell.dictionaries" = ["imperative"];
22 "git.enableGutters" = false; # We're using another plugin to do this
Skyler Greya7feb6e2022-08-26 06:51:55 +010023 "rust-analyzer.serverPath" = "${pkgs.rust-analyzer}/bin/rust-analyzer";
24 languageserver = {
25 nix = {
26 command = "${pkgs.rnix-lsp}/bin/rnix-lsp";
27 filetypes = ["nix"];
28 };
29 };
30 };
31 };
32 plugins = with pkgs.vimPlugins; [
33 # Language servers
34 coc-tsserver
35 coc-eslint
36 coc-rust-analyzer
37 coc-json
38 coc-jest
39 coc-css
Skyler Grey37e3c112022-09-09 08:15:08 +010040 coc-go
Skyler Greyb8300e72022-09-04 23:06:24 +010041 coc-markdownlint
Skyler Greya7feb6e2022-08-26 06:51:55 +010042
43 # Spellchecker
Skyler Grey2f9904e2022-09-05 03:18:02 +010044 nixpkgs-minion.legacyPackages.${system}.vimPlugins.coc-spell-checker
Skyler Greya7feb6e2022-08-26 06:51:55 +010045
46 # File explorer
47 coc-explorer
48 coc-git # TODO: Check if coc-git is still needed
49
50 # Snippet completion
51 coc-snippets
52 vim-snippets
53 ];
54 extraConfig = lib.pipe [./keybinds.vim ./theme.vim] [
55 (map builtins.readFile)
56 (builtins.concatStringsSep "\n")
57 ];
Skyler Grey37e3c112022-09-09 08:15:08 +010058 extraPackages = [pkgs.nodejs pkgs.rustc pkgs.go];
Skyler Greya7feb6e2022-08-26 06:51:55 +010059 };
60}