anchor.diff:        preStart = ''
           mkdir -p /var/run/slapd
           chown -R ${cfg.user}:${cfg.group} /var/run/slapd
  -        mkdir -p /var/db/openldap
  -        chown -R ${cfg.user}:${cfg.group} /var/db/openldap
  +        mkdir -p ${cfg.dataDir}
  +        chown -R ${cfg.user}:${cfg.group} ${cfg.dataDir}
         '';
  -      serviceConfig.ExecStart = "${openldap}/libexec/slapd -u openldap -g openldap -d 0 -f ${configFile}";
  +      serviceConfig.ExecStart = "${openldap}/libexec/slapd -u ${cfg.user} -g ${cfg.group} -d 0 -f ${configFile}";
       };
   
  -    users.extraUsers = optionalAttrs (cfg.user == "openldap") (singleton
  -      { name = "openldap";
  +    users.extraUsers.openldap =
  +      { name = cfg.user;
           group = cfg.group;
           uid = config.ids.uids.openldap;
  -      });
  +      };
   
  -    users.extraGroups = optionalAttrs (cfg.group == "openldap") (singleton
  -      { name = "openldap";
  +    users.extraGroups.openldap =
  +      { name = cfg.group;
           gid = config.ids.gids.openldap;
  -     });
  +      };
   
     };
   }
  
positive.code:     services.openldap = {
  
        enable = mkOption {
          default = false;
          description = "
            Whether to enable the ldap server.
  
negative.code:       };
  
        user = mkOption {
          type = types.string;
          default = "openldap";
          description = "User account under which slapd runs.";
        };
  
        group = mkOption {
          type = types.string;
          default = "openldap";
          description = "Group account under which slapd runs.";
        };
  
        dataDir = mkOption {
          type = types.string;
          default = "/var/db/openldap";
          description = "The database directory.";
        };
  
        extraConfig = mkOption {
          type = types.lines;
          default = "";
          description = "
            sldapd.conf configuration
  