How do I stop a module from installing optional configuration, or make sure it's installed by the time I want to remove it myself? I don't want the "Frontpage" view to be installed along with my installation profile.

I tried adding a hook_install to a module which does this:

\Drupal::entityTypeManager()-&gt;getStorage('view')
  -&gt;load('frontpage')
  -&gt;setStatus(FALSE)
  -&gt;save(); 


But during installation that tells me that the frontpage view doesn't exist when my module is being installed. Fair enough, so I added the module that owns the frontpage view config (core node) to my dependencies:

dependencies:
  ...
  - drupal:node


Still didn't work. Then I realised it's optional config; maybe the module responsible for processing that config (core views) also needs to be a dependency. It would make sense, so my dependencies became:

dependencies:
  ...
  - drupal:node
  - drupal:views


Still didn't work, same problem - the View simply doesn't exist yet, so it can't be deleted.

So two halves of the same question:


How do I stop this config from ever having been installed in the first place (or installed but initially disabled)?
If that's not possible, what dependencies do I need to provide to ensure that the View in question is installed by the time my own hook_install is executed, so I can remove/disable it myself?
Hmm, have you tried in the .profile file an hook_install_tasks?

Or maybe with the hook_install_tasks_alter.

/**
 * Implements hook_install_tasks_alter().
 */
function MODULE_install_tasks_alter(array &amp;$tasks, array $install_state) {
  $tasks['install_finished']['function'] = 'CALLBACK_post_install';
}


And deactivate the view in the callback.