anchor.diff:          '';
         };
   
  +      configItems = mkOption {
  +        default = {};
  +        type = types.attrsOf types.str;
  +        example = ''
  +          {
  +            "auth_backends.1.authn" = "rabbit_auth_backend_ldap";
  +            "auth_backends.1.authz" = "rabbit_auth_backend_internal";
  +          }
  +        '';
  +        description = ''
  +          New style config options.
  +
  +          See http://www.rabbitmq.com/configure.html
  +        '';
  +      };
  +
         config = mkOption {
           default = "";
           type = types.str;
           description = ''
  -          Verbatim configuration file contents.
  +          Verbatim advanced configuration file contents.
  +          Prefered way is to use configItems.
  +
             See http://www.rabbitmq.com/configure.html
           '';
         };
  
positive.code:         type = types.listOf types.str;
          description = "The names of plugins to enable";
        };
      };
    };
  
  
negative.code: 
  let
    cfg = config.services.rabbitmq;
  
    inherit (builtins) concatStringsSep;
  
    config_file_content = lib.generators.toKeyValue {} cfg.configItems;
    config_file = pkgs.writeText "rabbitmq.conf" config_file_content;
  
    advanced_config_file = pkgs.writeText "advanced.config" cfg.config;
  
  in {
    ###### interface
    options = {
      services.rabbitmq = {
        enable = mkOption {
          default = false;
          description = ''
            Whether to enable the RabbitMQ server, an Advanced Message
            Queuing Protocol (AMQP) broker.
          '';
        };
  
        package = mkOption {
          default = pkgs.rabbitmq-server;
          type = types.package;
          defaultText = "pkgs.rabbitmq-server";
          description = ''
            Which rabbitmq package to use.
          '';
        };
  
  