diff --git a/features.install b/features.install
new file mode 100644
index 0000000..e30b3d1
--- /dev/null
+++ b/features.install
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * @file
+ * Install, update and uninstall functions for the Features module.
+ */
+
+/**
+ * Implements hook_requirements().
+ */
+function features_requirements($phase) {
+  $requirements = array();
+
+  if ($phase == 'runtime' || $phase == 'install') {
+    // Check for the core class at install time or the Features class at
+    // runtime.
+    switch ($phase) {
+      case 'install':
+        // Prior to install, we expect core's proxy class.
+        $expected_class_name = 'Drupal\Core\ProxyClass\Config\ConfigInstaller';
+        break;
+      case 'runtime':
+        // At runtime, we expect Features' proxy class.
+        $expected_class_name = 'Drupal\features\ProxyClass\FeaturesConfigInstaller';
+        break;
+    }
+    $service = \Drupal::service('config.installer');
+    $current_class_name = get_class($service);
+    if ($current_class_name !== $expected_class_name) {
+      $requirements['features_service'] = [
+        'title' => t('Support for installing features on original site'),
+        'severity' => REQUIREMENT_WARNING,
+        'description' => t('Ordinarily, Features provides the functionality of allowing feature modules to be installed on the originating site. It does so by altering a core service, <em>config.installer</em>. However, because a module present on your site has already overridden the <em>config.installer</em> service class with @class_name, Features will not provide this functionality.', ['@class_name' => $current_class_name]),
+      ];
+    }
+    // During install phase, value should only be used for version numbers.
+    if ($phase == 'runtime') {
+      $requirements['features_service']['value'] = t('Disabled');
+    }
+  }
+
+  return $requirements;
+}
diff --git a/src/FeaturesServiceProvider.php b/src/FeaturesServiceProvider.php
index 777afb0..954cc24 100644
--- a/src/FeaturesServiceProvider.php
+++ b/src/FeaturesServiceProvider.php
@@ -18,7 +18,11 @@ class FeaturesServiceProvider extends ServiceProviderBase {
   public function alter(ContainerBuilder $container) {
     // Override the config.installer class with a new class.
     $definition = $container->getDefinition('config.installer');
-    $definition->setClass('Drupal\features\FeaturesConfigInstaller');
+    // Claim the service only if another module hasn't already done so.
+    $current_class = $definition->getClass();
+    if ($current_class === 'Drupal\Core\Config\ConfigInstaller') {
+      $definition->setClass('Drupal\features\FeaturesConfigInstaller');
+    }
   }
 
 }
