diff --git a/core/profiles/standard/config/install/core.menu.static_menu_link_overrides.yml b/core/profiles/standard/config/install/core.menu.static_menu_link_overrides.yml
new file mode 100644
index 0000000000..114c789369
--- /dev/null
+++ b/core/profiles/standard/config/install/core.menu.static_menu_link_overrides.yml
@@ -0,0 +1,7 @@
+definitions:
+  contact__site_page:
+    enabled: true
+    menu_name: footer
+    parent: ''
+    weight: 0
+    expanded: false
diff --git a/core/profiles/standard/config/install/node.settings.yml b/core/profiles/standard/config/install/node.settings.yml
new file mode 100644
index 0000000000..6cb95cbc42
--- /dev/null
+++ b/core/profiles/standard/config/install/node.settings.yml
@@ -0,0 +1 @@
+use_admin_theme: true
diff --git a/core/profiles/standard/config/install/system.site.yml b/core/profiles/standard/config/install/system.site.yml
new file mode 100644
index 0000000000..46a19562fe
--- /dev/null
+++ b/core/profiles/standard/config/install/system.site.yml
@@ -0,0 +1,12 @@
+uuid: ''
+name: ''
+mail: ''
+slogan: ''
+page:
+  403: ''
+  404: ''
+  front: /node
+admin_compact_mode: false
+weight_select_max: 100
+langcode: en
+default_langcode: en
diff --git a/core/profiles/standard/config/install/user.role.anonymous.yml b/core/profiles/standard/config/install/user.role.anonymous.yml
new file mode 100644
index 0000000000..6833f166ec
--- /dev/null
+++ b/core/profiles/standard/config/install/user.role.anonymous.yml
@@ -0,0 +1,13 @@
+langcode: en
+status: true
+dependencies: {  }
+id: anonymous
+label: 'Anonymous user'
+weight: 0
+is_admin: false
+permissions:
+  - 'access comments'
+  - 'access content'
+  - 'access site-wide contact form'
+  - 'search content'
+  - 'use text format restricted_html'
diff --git a/core/profiles/standard/config/install/user.role.authenticated.yml b/core/profiles/standard/config/install/user.role.authenticated.yml
new file mode 100644
index 0000000000..b5487dbc46
--- /dev/null
+++ b/core/profiles/standard/config/install/user.role.authenticated.yml
@@ -0,0 +1,16 @@
+langcode: en
+status: true
+dependencies: {  }
+id: authenticated
+label: 'Authenticated user'
+weight: 1
+is_admin: false
+permissions:
+  - 'access comments'
+  - 'access content'
+  - 'access shortcuts'
+  - 'access site-wide contact form'
+  - 'post comments'
+  - 'search content'
+  - 'skip comment approval'
+  - 'use text format basic_html'
diff --git a/core/profiles/standard/config/install/user.settings.yml b/core/profiles/standard/config/install/user.settings.yml
new file mode 100644
index 0000000000..04195552a3
--- /dev/null
+++ b/core/profiles/standard/config/install/user.settings.yml
@@ -0,0 +1,16 @@
+anonymous: Anonymous
+verify_mail: true
+notify:
+  cancel_confirm: true
+  password_reset: true
+  status_activated: true
+  status_blocked: false
+  status_canceled: false
+  register_admin_created: true
+  register_no_approval_required: true
+  register_pending_approval: true
+register: visitors_admin_approval
+cancel_method: user_cancel_block
+password_reset_timeout: 86400
+password_strength: true
+langcode: en
diff --git a/core/profiles/standard/standard.install b/core/profiles/standard/standard.install
index 2f567abb49..42dcef2a13 100644
--- a/core/profiles/standard/standard.install
+++ b/core/profiles/standard/standard.install
@@ -17,17 +17,6 @@
  * @see system_install()
  */
 function standard_install() {
-  // Set front page to "node".
-  \Drupal::configFactory()->getEditable('system.site')->set('page.front', '/node')->save(TRUE);
-
-  // Allow visitor account creation with administrative approval.
-  $user_settings = \Drupal::configFactory()->getEditable('user.settings');
-  $user_settings->set('register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL)->save(TRUE);
-
-  // Enable default permissions for system roles.
-  user_role_grant_permissions(RoleInterface::ANONYMOUS_ID, ['access comments']);
-  user_role_grant_permissions(RoleInterface::AUTHENTICATED_ID, ['access comments', 'post comments', 'skip comment approval']);
-
   // Assign user 1 the "administrator" role.
   $user = User::load(1);
   $user->roles[] = 'administrator';
@@ -37,17 +26,6 @@ function standard_install() {
   // menu links are valid.
   \Drupal::service('router.builder')->rebuildIfNeeded();
 
-  // Enable the Contact link in the footer menu.
-  /** @var \Drupal\Core\Menu\MenuLinkManagerInterface $menu_link_manager */
-  $menu_link_manager = \Drupal::service('plugin.manager.menu.link');
-  $menu_link_manager->updateDefinition('contact.site_page', ['enabled' => TRUE]);
-
-  user_role_grant_permissions(RoleInterface::ANONYMOUS_ID, ['access site-wide contact form']);
-  user_role_grant_permissions(RoleInterface::AUTHENTICATED_ID, ['access site-wide contact form']);
-
-  // Allow authenticated users to use shortcuts.
-  user_role_grant_permissions(RoleInterface::AUTHENTICATED_ID, ['access shortcuts']);
-
   // Populate the default shortcut set.
   $shortcut = Shortcut::create([
     'shortcut_set' => 'default',
@@ -64,11 +42,4 @@ function standard_install() {
     'link' => ['uri' => 'internal:/admin/content'],
   ]);
   $shortcut->save();
-
-  // Allow all users to use search.
-  user_role_grant_permissions(RoleInterface::ANONYMOUS_ID, ['search content']);
-  user_role_grant_permissions(RoleInterface::AUTHENTICATED_ID, ['search content']);
-
-  // Enable the admin theme.
-  \Drupal::configFactory()->getEditable('node.settings')->set('use_admin_theme', TRUE)->save(TRUE);
 }
