diff --git a/admin_menu.api.php b/admin_menu.api.php
index 2d212fb..337bf34 100644
--- a/admin_menu.api.php
+++ b/admin_menu.api.php
@@ -129,8 +129,8 @@ function hook_admin_menu_replacements($complete) {
   // current counts already.
   if (!$complete) {
     // Check whether the users count component is enabled.
-    $components = variable_get('admin_menu_components', array());
-    if (!empty($components['admin_menu.users']) && ($user_count = admin_menu_get_user_count())) {
+    $components = \Drupal::config('admin_menu.settings')->get('components');
+    if (!empty($components['users']) && ($user_count = admin_menu_get_user_count())) {
       // Replace the counters in the cached menu output with current counts.
       $items['.admin-menu-users a'] = $user_count;
     }
diff --git a/admin_menu.install b/admin_menu.install
index d9eb140..d9a45ec 100644
--- a/admin_menu.install
+++ b/admin_menu.install
@@ -15,26 +15,6 @@ function admin_menu_install() {
 }
 
 /**
- * Implements hook_uninstall().
- */
-function admin_menu_uninstall() {
-  // Delete variables.
-  variable_del('admin_menu_components');
-  variable_del('admin_menu_margin_top');
-  variable_del('admin_menu_position_fixed');
-  variable_del('admin_menu_tweak_modules');
-  variable_del('admin_menu_tweak_tabs');
-  variable_del('admin_menu_show_all');
-  variable_del('admin_menu_display');
-  variable_del('admin_menu_cache_server');
-  variable_del('admin_menu_cache_client');
-  // Unused variables still should be deleted.
-  variable_del('admin_menu_devel_modules');
-  variable_del('admin_menu_devel_modules_enabled');
-  variable_del('admin_menu_devel_modules_skip');
-}
-
-/**
  * Add {cache_admin_menu} table.
  */
 function admin_menu_update_7300() {
diff --git a/admin_menu.module b/admin_menu.module
index 02c98f6..e83f916 100644
--- a/admin_menu.module
+++ b/admin_menu.module
@@ -207,14 +207,14 @@ function admin_menu_page_bottom(array &$page_bottom) {
     $settings['replacements'] = $replacements;
   }
 
-  if ($setting = variable_get('admin_menu_margin_top', 1)) {
+  if ($setting = \Drupal::config('admin_menu.settings')->get('margin_top')) {
     $settings['margin_top'] = $setting;
     // @todo Drupal.behaviors.adminMenuMarginTop is obsolete, but
     //   hook_page_build() does not allow to set a CSS class on the body yet.
     // @see http://drupal.org/node/1473548, http://drupal.org/node/1194528
     //$page['#attributes']['class'][] = 'admin-menu';
   }
-  if ($setting = variable_get('admin_menu_position_fixed', 1)) {
+  if ($setting = \Drupal::config('admin_menu.settings')->get('position_fixed')) {
     $settings['position_fixed'] = $setting;
 
     // TODO: does this still apply on D8?
@@ -228,14 +228,14 @@ function admin_menu_page_bottom(array &$page_bottom) {
     );
     */
   }
-  if ($setting = variable_get('admin_menu_tweak_tabs', 0)) {
+  if ($setting = \Drupal::config('admin_menu.settings')->get('tweak_tabs')) {
     $settings['tweak_tabs'] = $setting;
   }
   if ($current_path == 'admin/modules' || strpos($current_path, 'admin/modules/list') === 0) {
-    $settings['tweak_modules'] = variable_get('admin_menu_tweak_modules', 0);
+    $settings['tweak_modules'] = \Drupal::config('admin_menu.settings')->get('tweak_modules');
   }
   if ($current_path == 'admin/people/permissions' || $current_path == 'admin/people/permissions/list') {
-    $settings['tweak_permissions'] = variable_get('admin_menu_tweak_permissions', 0);
+    $settings['tweak_permissions'] = \Drupal::config('admin_menu.settings')->get('tweak_permissions');
   }
 
   $attached['drupalSettings']['admin_menu']['settings'] = $settings;
@@ -296,7 +296,7 @@ function admin_menu_js() {
 function admin_menu_cache_get($cid) {
   $cache = &drupal_static(__FUNCTION__, array());
 
-  if (!variable_get('admin_menu_cache_client', TRUE)) {
+  if (!\Drupal::config('admin_menu.settings')->get('cache_client')) {
     return FALSE;
   }
   if (!array_key_exists($cid, $cache)) {
@@ -323,7 +323,7 @@ function admin_menu_cache_get($cid) {
  *   The cache tags for the data to set.
  */
 function admin_menu_cache_set($cid, $data, array $tags) {
-  if (variable_get('admin_menu_cache_client', TRUE)) {
+  if (\Drupal::config('admin_menu.settings')->get('cache_client')) {
     cache('admin_menu')->set($cid, $data, CacheBackendInterface::CACHE_PERMANENT, $tags);
   }
 }
@@ -383,7 +383,7 @@ function admin_menu_admin_menu_replacements($complete) {
   // current counts already.
   if (!$complete) {
     // Check whether the users count component is enabled.
-    $components = variable_get('admin_menu_components', array());
+    $components = \Drupal::config('admin_menu.settings')->get('components');
     if (!empty($components['admin_menu.users']) && ($user_count = admin_menu_get_user_count())) {
       // Replace the counters in the cached menu output with current counts.
       $items['.admin-menu-users a'] = $user_count;
@@ -443,7 +443,7 @@ function admin_menu_session_count($timestamp = 0, $anonymous = TRUE) {
 function admin_menu_output($complete = FALSE) {
   global $user;
 
-  $cache_server_enabled = !$complete && variable_get('admin_menu_cache_server', TRUE);
+  $cache_server_enabled = !$complete;
   $langcode = language(LANGUAGE_TYPE_INTERFACE)->langcode;
   $cid = 'admin_menu:' . $user->uid . ':' . session_id() . ':' . $langcode;
   $tags = array('admin_menu' => TRUE, 'user' => $user->uid, 'language' => $langcode);
@@ -466,12 +466,7 @@ function admin_menu_output($complete = FALSE) {
   // Rebuild the output.
   if (!isset($content)) {
     // Retrieve enabled components to display and make them available for others.
-    $components = variable_get('admin_menu_components', array());
-    $components += array(
-      'admin_menu.menu' => TRUE,
-      'admin_menu.icon' => TRUE,
-      'admin_menu.account' => TRUE,
-    );
+    $components = \Drupal::config('admin_menu.settings')->get('components');
     $content['#components'] = $components;
     $content['#complete'] = $complete;
 
@@ -496,7 +491,7 @@ function admin_menu_output($complete = FALSE) {
     //   implementations (and $module.admin_menu.inc).
 
     // Add administration menu.
-    if (!empty($components['admin_menu.menu']) || $complete) {
+    if (!empty($components['menu']) || $complete) {
       $content['menu'] = admin_menu_links_menu(admin_menu_tree('admin'));
       $content['menu']['#theme'] = 'admin_menu_links';
       $content['menu']['#wrapper_attributes']['id'] = 'admin-menu-menu';
@@ -505,16 +500,16 @@ function admin_menu_output($complete = FALSE) {
     }
 
     // Add menu additions.
-    if (!empty($components['admin_menu.icon']) || $complete) {
+    if (!empty($components['icon']) || $complete) {
       $content['icon'] = admin_menu_links_icon();
     }
-    if (!empty($components['admin_menu.account']) || $complete) {
+    if (!empty($components['account']) || $complete) {
       $content['account'] = admin_menu_links_account();
     }
-    if (!empty($components['admin_menu.users']) || $complete) {
+    if (!empty($components['users']) || $complete) {
       $content['users'] = admin_menu_links_users();
     }
-    if (!empty($components['admin_menu.search']) || $complete) {
+    if (!empty($components['search']) || $complete) {
       $content['search'] = admin_menu_links_search();
     }
 
diff --git a/config/install/admin_menu.settings.yml b/config/install/admin_menu.settings.yml
new file mode 100644
index 0000000..e9433ff
--- /dev/null
+++ b/config/install/admin_menu.settings.yml
@@ -0,0 +1,7 @@
+position_fixed: true
+cache_client: true
+margin_top: true
+components:
+  icon: true
+  menu: true
+  account: true
diff --git a/config/schema/admin_menu.schema.yml b/config/schema/admin_menu.schema.yml
new file mode 100644
index 0000000..6757967
--- /dev/null
+++ b/config/schema/admin_menu.schema.yml
@@ -0,0 +1,47 @@
+admin_menu.settings:
+  type: mapping
+  label: 'Admin menu settings'
+  mapping:
+    components:
+      type: mapping
+      label: 'Admin menu components'
+      mapping:
+        icon:
+          type: boolean
+          label: 'Icon menu'
+        menu:
+          type: boolean
+          label: 'Administration menu'
+        search:
+          type: boolean
+          label: 'Search bar'
+        users:
+          type: boolean
+          label: 'User counts'
+        account:
+          type: boolean
+          label: 'Account links'
+    tweak_tabs:
+      type: boolean
+      label: 'Move local tasks into menu'
+    position_fixed:
+      type: boolean
+      label: 'Keep menu at top of page'
+    cache_client:
+      type: boolean
+      label: 'Cache menu in client-side browser'
+    margin_top:
+      type: boolean
+      label: 'Adjust top margin'
+    tweak_modules:
+      type: boolean
+      label: 'Collapse module groups on the modules admin page'
+    tweak_permissions:
+      type: boolean
+      label: 'Collapse module groups on the permissions admin page'
+    display:
+      type: boolean
+      label: 'Display additional data for each menu item'
+    show_all:
+      type: boolean
+      label: 'Display all menu items'
