diff --git a/tools/load-asdf.lisp b/tools/load-asdf.lisp
index a4e49179303e0e9e97ea559152f96d1979aec37b..c923492516ed527df414caabf636918042886ba2 100644
--- a/tools/load-asdf.lisp
+++ b/tools/load-asdf.lisp
@@ -154,12 +154,12 @@
 (in-package :asdf)
 
 (eval-when (:compile-toplevel :load-toplevel :execute)
-  ;; User-configurable parts
-  (let* ((required-asdf-version "3.1.2") ;; In the end, we want at least ASDF 3.1.2
-         (here-directory
+  (let* ((here-directory
            (pathname-directory-pathname
             (or *compile-file-truename* *load-truename*
                 (truename *default-pathname-defaults*))))
+         ;; User-configurable parts start here
+         (required-asdf-version "3.1.2") ;; In the end, we want at least ASDF 3.1.2
          (source-directory
            ;; Here, define the top of your source code hierarchy.
            ;; For your project, it could be something like
@@ -173,7 +173,11 @@
            ;; and in a fully controlled build, you'd :ignore-inherited-configuration
                   (or (getenvp "ASDF_DEVEL_SOURCE_REGISTRY")
                       `(:source-registry
-                        (:tree ,source-directory)
+                        (:directory ,source-directory)
+                        (:directory (,source-directory "uiop"))
+                        (:directory (,source-directory "tools"))
+                        (:tree (,source-directory "ext"))
+                        ;; In a fully controlled build, you'd :ignore-inherited-configuration instead:
                         :inherit-configuration)))
          (output-directory
            ;; There again, you might want to use some getenvp variant.