diff --git a/admin_toolbar.info.yml b/admin_toolbar.info.yml
index 9232e70..1e731dd 100644
--- a/admin_toolbar.info.yml
+++ b/admin_toolbar.info.yml
@@ -7,3 +7,5 @@ core: 8.x
 
 dependencies:
   - drupal:toolbar
+
+configure: admin_toolbar.config
diff --git a/admin_toolbar.install b/admin_toolbar.install
new file mode 100644
index 0000000..afc539f
--- /dev/null
+++ b/admin_toolbar.install
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * Overwrite configs.
+ * This is shown to users on the update.php page.
+ */
+function admin_toolbar_update_8001(&$sandbox) {
+  $config_factory = \Drupal::configFactory();
+  $default_value = 1;
+  $config_factory->getEditable('admin_toolbar.settings')
+    ->set('position', $default_value)
+    ->save();
+}
diff --git a/admin_toolbar.libraries.yml b/admin_toolbar.libraries.yml
index 85b322a..2c17fba 100644
--- a/admin_toolbar.libraries.yml
+++ b/admin_toolbar.libraries.yml
@@ -8,3 +8,7 @@ toolbar.tree:
   dependencies:
     - core/jquery
     - core/drupal
+toolbar.position:
+  css:
+    theme:
+      css/position.css: {}
\ No newline at end of file
diff --git a/admin_toolbar.module b/admin_toolbar.module
index a9199e9..89cdb3d 100644
--- a/admin_toolbar.module
+++ b/admin_toolbar.module
@@ -96,3 +96,11 @@ function toolbar_tools_menu_navigation_links(array $tree) {
   }
   return $tree;
 }
+
+function admin_toolbar_page_attachments(array &$attachments) {
+  $config = \Drupal::config('admin_toolbar.settings');
+  $admin_toolbar_position = $config->get('position');
+  if ($admin_toolbar_position == 0) {
+    $attachments['#attached']['library'][] = 'admin_toolbar/toolbar.position';
+  }
+}
diff --git a/admin_toolbar.routing.yml b/admin_toolbar.routing.yml
new file mode 100644
index 0000000..3503a86
--- /dev/null
+++ b/admin_toolbar.routing.yml
@@ -0,0 +1,7 @@
+admin_toolbar.config:
+  path: '/admin/config/system/admin_toolbar'
+  defaults:
+    _form: 'Drupal\admin_toolbar\Form\ConfigurationForm'
+    _title: 'Position Menu'
+  requirements:
+     _permission: 'administer site configuration'
diff --git a/css/position.css b/css/position.css
new file mode 100644
index 0000000..3dc73c3
--- /dev/null
+++ b/css/position.css
@@ -0,0 +1,3 @@
+.toolbar-bar {
+  position: absolute !important;
+}
diff --git a/src/Form/ConfigurationForm.php b/src/Form/ConfigurationForm.php
new file mode 100644
index 0000000..6b3f947
--- /dev/null
+++ b/src/Form/ConfigurationForm.php
@@ -0,0 +1,54 @@
+<?php
+/**
+ * @file
+ * Contains Drupal\admin_toolbar\Form\ConfigurationForm.
+ */
+
+namespace Drupal\admin_toolbar\Form;
+
+use Drupal\Core\Form\ConfigFormBase;
+use Drupal\Core\Form\FormStateInterface;
+
+class ConfigurationForm extends ConfigFormBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFormId() {
+    return 'configuration_admin_form';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildForm(array $form, FormStateInterface $form_state) {
+
+    $form = parent::buildForm($form, $form_state);
+    $config = $this->config('admin_toolbar.settings');
+
+    $form['position'] = [
+      '#type' => 'checkbox',
+      '#title' => $this->t('Keep menu at top of page'),
+      '#default_value' => $config->get('position'),
+      '#description' => t('Displays the administration menu always at the top of the browser viewport (even when scrolling the page).'),
+    ];
+    return $form;
+  }
+
+  public function submitForm(array &$form, FormStateInterface $form_state) {
+    $config = $this->config('admin_toolbar.settings');
+    $config->set('position', $form_state->getValue('position'));
+    $config->save();
+
+    return parent::submitForm($form, $form_state);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function getEditableConfigNames() {
+    return [
+      'admin_toolbar.settings',
+    ];
+  }
+}
