{ config, lib, pkgs, ... }: with lib; let cfg = config.nixfiles.modules.vim; in { options.nixfiles.modules.vim = { enable = mkEnableOption "Vim"; rc = mkOption { type = types.str; default = readFile ./rc.vim; description = "Configuration file."; }; plugins = mkOption { type = with types; listOf package; default = with pkgs.vimPlugins; [ editorconfig-vim vim-eunuch vim-nix vim-sensible vim-sleuth vim-surround vim-unimpaired ]; description = "Plugins."; }; }; config = mkIf cfg.enable { environment = with config.programs.vim; { systemPackages = [package]; variables = rec { EDITOR = mkOverride 15 (getExe' package "vim"); VISUAL = EDITOR; }; }; }; }