{ lib, pkgs, ... } @ attrs: with lib; let helpers = import ../helpers.nix {inherit lib;}; eitherAttrsStrInt = with types; let strInt = either str int; in either strInt (attrsOf (either strInt (attrsOf strInt))); in with helpers; mkPlugin attrs { name = "emmet"; description = "Enable emmet"; package = pkgs.vimPlugins.emmet-vim; options = { mode = mkDefaultOpt { type = types.enum ["i" "n" "v" "a"]; global = "user_emmet_mode"; description = "Mode where emmet will enable"; }; leader = mkDefaultOpt { type = types.str; global = "user_emmet_leader_key"; description = "Set leader key"; }; settings = mkDefaultOpt { type = types.attrsOf (types.attrsOf eitherAttrsStrInt); global = "user_emmet_settings"; description = "Emmet settings"; }; }; }