{ pkgs, lib, config, options, ... }:
let inherit (builtins) readFile; in
{
config = {
programs.vim = {
  extraConfig =
    readFile vim/init.vim
    #+ readFile home/vim/syntastic.vim
    #+ readFile home/vim/coc.vim
    + readFile vim/ale.vim
    ;
  # Plugin list:
  # nix-instantiate -E --eval 'builtins.attrNames (import <nixpkgs> {}).vimPlugins'
  plugins = [
    #pkgs.vimPlugins.vim-lsc
    pkgs.vimPlugins.gitgutter
    #pkgs.vimPlugins.nvim-yarp
    #pkgs.vimPlugins.deoplete-nvim
    #pkgs.vimPlugins.deoplete-lsp
    #pkgs.vimPlugins.LanguageClient-neovim
    #pkgs.vimPlugins.fzf-vim
    #pkgs.vimPlugins.echodoc
    pkgs.vimPlugins.ale
    #pkgs.vimPlugins.indentLine
    #pkgs.vimPlugins.vim-indent-guides
    #pkgs.vimPlugins.coc-nvim
    #pkgs.vimPlugins.coc-diagnostic
    #pkgs.vimPlugins.coc-json
    #pkgs.vimPlugins.coc-lists
    pkgs.vimPlugins.easy-align
    pkgs.vimPlugins.hoogle
    pkgs.vimPlugins.Recover-vim
    #pkgs.vimPlugins.syntastic
    #pkgs.vimPlugins.The_NERD_tree
    pkgs.vimPlugins.vim-dirvish
    pkgs.vimPlugins.vim-buffergator
    pkgs.vimPlugins.vim-markdown
    pkgs.vimPlugins.vimproc
    #pkgs.vimPlugins.fugitive
  ];
};
programs.neovim = {
  extraConfig =
    readFile vim/init.vim +
    readFile vim/ale.vim;
  plugins = [
    #pkgs.vimPlugins.vim-lsc
    pkgs.vimPlugins.gitgutter
    #pkgs.vimPlugins.nvim-yarp
    #pkgs.vimPlugins.deoplete-nvim
    #pkgs.vimPlugins.deoplete-lsp
    #pkgs.vimPlugins.LanguageClient-neovim
    #pkgs.vimPlugins.fzf-vim
    #pkgs.vimPlugins.echodoc
    pkgs.vimPlugins.ale
    #pkgs.vimPlugins.indentLine
    #pkgs.vimPlugins.vim-indent-guides
    #pkgs.vimPlugins.coc-nvim
    #pkgs.vimPlugins.coc-diagnostic
    #pkgs.vimPlugins.coc-json
    #pkgs.vimPlugins.coc-lists
    pkgs.vimPlugins.easy-align
    pkgs.vimPlugins.hoogle
    pkgs.vimPlugins.Recover-vim
    #pkgs.vimPlugins.syntastic
    #pkgs.vimPlugins.The_NERD_tree
    pkgs.vimPlugins.vim-dirvish
    pkgs.vimPlugins.vim-buffergator
    pkgs.vimPlugins.vim-markdown
    pkgs.vimPlugins.vimproc
    #pkgs.vimPlugins.fugitive
  ];
};
} // lib.optionalAttrs (options ? "nixpkgs") {
  nixpkgs.config.vim.gui = if config.host.desktop then "gtk3" else "";
};
}