{
  pkgs,
  system,
  lib,
  nixpkgs-minion,
  home,
  utils,
  omnisharp-language-server,
  ...
}: {
  programs.neovim = {
    coc = {
      enable = true;
      settings = {
        suggest.floatConfig = {
          border = true;
          rounded = true;
        };
        "suggest.noselect" = false;
        "cSpell.checkOnlyEnabledfileTypes" = false;
        "cSpell.dictionaryDefinitions" = [
          {
            name = "imperative";
            path = "${home.home.homeDirectory}/.local/share/cspell/dictionary.txt";
          }
        ];
        "cSpell.dictionaries" = ["imperative"];
        "git.enableGutters" = false; # We're using another plugin to do this
        "rust-analyzer.server.path" = "${pkgs.rust-analyzer}/bin/rust-analyzer";
        "omnisharp.path" = "${pkgs.omnisharp-roslyn}/bin/OmniSharp";
        "markdownlint.config" = {
          line-length = {
            code_blocks = false;
            tables = false;
          };
        };
        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
      coc-go
      coc-markdownlint
      coc-texlab

      # Spellchecker
      nixpkgs-minion.legacyPackages.${system}.vimPlugins.coc-spell-checker
      nixpkgs-minion.legacyPackages.${system}.vimPlugins.coc-omnisharp

      # File explorer
      coc-explorer
      coc-git # TODO: Check if coc-git is still needed

      # Snippet completion
      ultisnips
      vim-snippets
      coc-ultisnips

      # General utils
      coc-pairs
    ];
    extraConfig = lib.pipe [./keybinds.vim ./theme.vim] [
      (map builtins.readFile)
      (builtins.concatStringsSep "\n")
    ];
    extraPackages = with pkgs; [
      nodejs
      rustc
      go
      rust-analyzer
      texlab
      omnisharp-roslyn
    ];
  };
  home.file = lib.pipe ./snippets [
    builtins.readDir
    builtins.attrNames
    (map
      (f: {
        name = ".config/nvim/UltiSnips/${f}";
        value = {
          source = ./snippets + "/${f}";
          target = ".config/nvim/UltiSnips/${f}";
        };
      }))
    builtins.listToAttrs
    lib.traceValSeq
  ] // {
    ".config/coc/placeholder".text = "";
  };
}
