diff --git a/mpcdf_common.py b/mpcdf_common.py
index 58e3a65913bba980e807754b65a2803a467f8b1a..f52c3258fbe6cfc47e99d0a499d9c6e41f78b562 100644
--- a/mpcdf_common.py
+++ b/mpcdf_common.py
@@ -415,6 +415,8 @@ def mpcdf_enable_repositories(api_url, project, package, verbose=False, dry_run=
     for enable in build.findall("./enable"):
         build.remove(enable)
 
+    disabled_repos = {disable.get("repository") for disable in build.findall("./disable")}
+
     try:
         enable_repos = get_attribute_values(api_url, project, package, "MPCDF:enable_repositories")
     except Exception:
@@ -443,13 +445,15 @@ def mpcdf_enable_repositories(api_url, project, package, verbose=False, dry_run=
         latest_intel = sorted((c for c in all_compilers if c.startswith("intel")), key=package_sort_key)[-1]
         latest_gcc = sorted((c for c in all_compilers if c.startswith("gcc")), key=package_sort_key)[-1]
 
+    i = len(build)
+
     def enable(name):
-        if name in ignore_repos:
+        if name in ignore_repos or name in disabled_repos:
             return
         node = ElementTree.Element("enable")
         node.set("repository", name)
         node.tail = "\n    "
-        build.insert(0, node)
+        build.insert(i, node)
         if verbose:
             print("Enabling", name)