Doing a simple checkbox in field API I'm trying to add a simple checkbox in a Drupal 8 Entity Form that displays like the old Form API:

$form['approved'] = [
  '#type' =&gt; 'checkbox',
  '#title' =&gt; t('Approved'),
  '#description' =&gt; t('Check this to indicate this person is approved for membership'),
];


Using D8 style field definitions, this should be something like

$fields['approved'] = BaseFieldDefinition::create('boolean')
  -&gt;setLabel(t('Approved'))
  -&gt;setDescription(t('Volunteer is approved for trusted work.'))
  -&gt;setSettings(array(
    'display_label' =&gt; TRUE,
  ))
  -&gt;setDisplayOptions('view', array(
    'type' =&gt; 'unicode-yes-no',
    'weight' =&gt; -3,
  ))
  -&gt;setDisplayOptions('form', array(
    'type' =&gt; 'boolean_checkbox',
    'weight' =&gt; -3,
  ))
  -&gt;setDisplayConfigurable('form', TRUE)
  -&gt;setDisplayConfigurable('view', TRUE);


This doesn't quite work; I'm getting a checkbox with the label "On".

How do I fix this?  Also has anybody gathered the various parameters used for setDisplayOptions() in one place and documented how these map to the Form API and the Render API?  I've been looking at the sources in core/lib/Drupal/Core, and I'm not finding much.  And there isn't even a test for the boolean_checkbox widget, so no code to look at there either.
You can always just create a field in the UI and extract the settings from there. Or look at the defaultSettings() method in the plugin class, where you can find this:

/**
 * {@inheritdoc}
 */
public static function defaultSettings() {
  return array(
    'display_label' =&gt; FALSE,
  ) + parent::defaultSettings();
}


So, add 'settings' =&gt; ['display_label' =&gt; TRUE] to your form display definition and you have what you want.