Yesterday, Acquia open sourced Reservoir, a new distribution designed for building headless Drupal instances. The Reservoir team provided a composer project command for setting up a Reservoir instance easily, but it doesn't bundle a VM. Fortunately, making BLT work with Reservoir isn't difficult. There are, though, a few steps to be aware of.
To get started, run the composer project to build a new BLT instance.
composer create-project --no-interaction acquia/blt-project MY_PROJECT
Once that completes, you need to add reservoir and (optionally) remove the lightning distro
composer require acquia/reservoir
composer remove acquia/lightning
Next, update the blt/project.yml file. The key changes you'll want to make here (beyond setting a new project prefix, etc) are a) changing the distro from ligthning to reservoir and b) removing views_ui from the modules:enable list for local environments.* An excerpt of my git diff for this file looks like...
- name: lightning
+ name: reservoir
- enable: [dblog, devel, seckit, views_ui]
+ enable: [dblog, devel, seckit]
Once that's done, continue with the BLT setup process from Step 4 (assuming you want to use Drupal VM. Step 5 otherwise).
One other thing you'll have to do is to create a public/private key pair and update the settings in /admin/config/people/simple_oauth. These are apparently created in the installation process if you go through the UI based installation, but doing the BLT process described here bypasses it.
* If you don't remove views_ui, the world won't explode or anything, but when you run blt setup you'll get errors reported like the ones below:
blt > setup:toggle-modules:
[drush] dblog is already enabled. [ok]
[drush] The following extensions will be enabled: devel, seckit, views_ui, views
[drush] Do you really want to continue? (y/n): y
[drush] Argument 1 passed to [error]
[drush] must implement interface
[drush] Drupal\Component\Plugin\PluginInspectionInterface, null given, called
[drush] in /var/www/mrpink/docroot/core/modules/views/src/Entity/View.php on
[drush] line 281 and defined PluginDependencyTrait.php:29
[drush] E_RECOVERABLE_ERROR encountered; aborting. To ignore recoverable [error]
[drush] errors, run again with --no-halt-on-error
[drush] Drush command terminated abnormally due to an unrecoverable error. [error]
[phingcall] /Users/barrett.smith/Desktop/mrpink/./vendor/acquia/blt/phing/tasks/setup.xml:370:8: /Users/barrett.smith/Desktop/mrpink/./vendor/acquia/blt/phing/tasks/setup.xml:374:12: /Users/barrett.smith/Desktop/mrpink/./vendor/acquia/blt/phing/tasks/setup.xml:377:69: Drush exited with code 255
[phingcall] /Users/barrett.smith/Desktop/mrpink/./vendor/acquia/blt/phing/tasks/setup.xml:350:45: Execution of the target buildfile failed. Aborting.
BUILD FAILED/Users/barrett.smith/Desktop/mrpink/./vendor/acquia/blt/phing/tasks/local-sync.xml:12:30: Execution of the target buildfile failed. Aborting.
; 2 minutes 37.24 seconds