{ pkgs, config, ... }: let
  #unstable = import <nixos-unstable> { };
in

{
  environment.variables = {
    EDITOR = ["nvim"];
  };

  nixpkgs.config.packageOverrides = pkgs: with pkgs;{
    neovim_custom = neovim.override {
      configure = {
        customRC = builtins.readFile ./neovimrc;

        packages.myVimPackage = with pkgs.vimPlugins;
        {
          # loaded on launch
          start = [
            nerdtree # file manager
            commentary # comment stuff out based on language
            fugitive # full git integration
            vim-airline-themes # lean & mean status/tabline
            vim-airline # status bar
            gitgutter # git diff in the gutter (sign column)
            vim-trailing-whitespace # trailing whitspaces in red
            tagbar # F3 function overview
            syntastic # Fallback to singlethreaded but huge syntax support
            ReplaceWithRegister # For better copying/replacing
            polyglot # Language pack
            vim-indent-guides # for displaying indent levels
            ale # threaded language client
            vim-go # go linting
            deoplete-go # go autocompletion completion
            deoplete-nvim # general autocompletion
            molokai # color scheme
          ];

          # manually loadable by calling `:packadd $plugin-name`
          opt = [];
        };
      };
    };
  };

  environment.systemPackages = with pkgs; [
    ctags
    neovim_custom
    jq # For fixing json files
    xxd # .bin files will be displayed with xxd
    shellcheck # Shell linting
    ansible-lint # Ansible linting
    unzip # To vim into unzipped files
    nodePackages.jsonlint # json linting
    #python36Packages.python-language-server # python linting
    #python36Packages.pyls-mypy # Python static type checker
    #python36Packages.black # Python code formatter
    #python37Packages.yamllint # For linting yaml files
    #python37Packages.libxml2 # For fixing yaml files
    cquery # C/C++ support
    clang-tools # C++ fixer
  ];

  fonts = {
    fonts = with pkgs; [
      font-awesome_5
    ];
  };

}