blob: ca61561a712bf85138d31199d697877b2d8e249b [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 Greyba17b652022-09-09 14:22:54 +01007 utils,
Skyler Greya7feb6e2022-08-26 06:51:55 +01008 ...
9}: {
10 programs.neovim = {
11 coc = {
12 enable = true;
13 settings = {
14 "suggest.noselect" = false;
15 "cSpell.checkOnlyEnabledfileTypes" = false;
Skyler Grey55f84552022-09-05 11:04:39 +010016 "cSpell.dictionaryDefinitions" = [
17 {
18 name = "imperative";
19 path = "${home.home.homeDirectory}/.local/share/cspell/dictionary.txt";
20 }
21 ];
22 "cSpell.dictionaries" = ["imperative"];
23 "git.enableGutters" = false; # We're using another plugin to do this
Skyler Greya7feb6e2022-08-26 06:51:55 +010024 "rust-analyzer.serverPath" = "${pkgs.rust-analyzer}/bin/rust-analyzer";
25 languageserver = {
26 nix = {
27 command = "${pkgs.rnix-lsp}/bin/rnix-lsp";
28 filetypes = ["nix"];
29 };
30 };
31 };
32 };
33 plugins = with pkgs.vimPlugins; [
34 # Language servers
35 coc-tsserver
36 coc-eslint
37 coc-rust-analyzer
38 coc-json
39 coc-jest
40 coc-css
Skyler Grey37e3c112022-09-09 08:15:08 +010041 coc-go
Skyler Greyb8300e72022-09-04 23:06:24 +010042 coc-markdownlint
Skyler Greya7feb6e2022-08-26 06:51:55 +010043
44 # Spellchecker
Skyler Grey2f9904e2022-09-05 03:18:02 +010045 nixpkgs-minion.legacyPackages.${system}.vimPlugins.coc-spell-checker
Skyler Greya7feb6e2022-08-26 06:51:55 +010046
47 # File explorer
48 coc-explorer
49 coc-git # TODO: Check if coc-git is still needed
50
51 # Snippet completion
52 coc-snippets
53 vim-snippets
54 ];
55 extraConfig = lib.pipe [./keybinds.vim ./theme.vim] [
56 (map builtins.readFile)
57 (builtins.concatStringsSep "\n")
58 ];
Skyler Grey37e3c112022-09-09 08:15:08 +010059 extraPackages = [pkgs.nodejs pkgs.rustc pkgs.go];
Skyler Greya7feb6e2022-08-26 06:51:55 +010060 };
Skyler Greyba17b652022-09-09 14:22:54 +010061 home.file = lib.pipe ./snippets [
62 builtins.readDir
63 builtins.attrNames
64 (map
65 (f: {
66 name = ".config/coc/ultisnips/${f}";
67 value = {
68 source = ./snippets + "/${f}";
69 target = ".config/coc/ultisnips/${f}";
70 };
71 }))
72 builtins.listToAttrs
73 lib.traceValSeq
74 ];
Skyler Greya7feb6e2022-08-26 06:51:55 +010075}