def make_config(name, var_dict, title=None, description=None, **kwargs):
    """ Creates a config instance from scratch.

    Usage is virtually the same as :func:`attr.make_class`.

    >>> import file_config
    >>> MyConfig = file_config.make_config(
            "MyConfig",
            {"name": file_config.var(str)}
        )

    :param str name: The name of the config
    :param dict var_dict: The dictionary of config variable definitions
    :param str title: The title of the config, defaults to None, optional
    :param str description: The description of the config, defaults to None, optional
    :return: A new config class
    :rtype: class
    """

    return config(
        attr.make_class(name, attrs={}, **kwargs),
        these=var_dict,
        title=title,
        description=description,
    )