diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm
index 1a1ec1da12a12b97547424f16c2ac61e5c2b8293..77a128e8e3b2525f1746c5c1e3ad08f5f540d98a 100644
--- a/guix/build-system/gnu.scm
+++ b/guix/build-system/gnu.scm
@@ -119,7 +119,7 @@ (define* (gnu-build store name source inputs
                                           "bin" "sbin"))
                     (phases '%standard-phases)
                     (system (%current-system))
-                    (implicit-inputs? #t)         ; useful when bootstrapping
+                    (implicit-inputs? #t)    ; useful when bootstrapping
                     (modules '((guix build gnu-build-system)
                                (guix build utils))))
   "Return a derivation called NAME that builds from tarball SOURCE, with
@@ -151,14 +151,14 @@ (define builder
 
   (define guile-for-build
     (match guile
+      ((? package?)
+       (package-derivation store guile system))
+      ((and (? string?) (? derivation-path?))
+       guile)
       (#f                                         ; the default
        (let* ((distro (resolve-interface '(distro packages base)))
               (guile  (module-ref distro 'guile-final)))
-         (package-derivation store guile system)))
-      ((? package?)
-       (package-derivation store guile system))
-      ((? derivation-path?)
-       guile)))
+         (package-derivation store guile system)))))
 
   (build-expression->derivation store name system
                                 builder
diff --git a/guix/build-system/trivial.scm b/guix/build-system/trivial.scm
index 8759cb3f92297f8e0345e3cab42a5cb62714f7ed..3598018749557a6196d11591e36786c82515a702 100644
--- a/guix/build-system/trivial.scm
+++ b/guix/build-system/trivial.scm
@@ -31,14 +31,14 @@ (define* (trivial-build store name source inputs
 ignored."
   (define guile-for-build
     (match guile
+      ((? package?)
+       (package-derivation store guile system))
+      ((and (? string?) (? derivation-path?))
+       guile)
       (#f                                         ; the default
        (let* ((distro (resolve-interface '(distro packages base)))
               (guile  (module-ref distro 'guile-final)))
-         (package-derivation store guile system)))
-      ((? package?)
-       (package-derivation store guile system))
-      ((? derivation-path?)
-       guile)))
+         (package-derivation store guile system)))))
 
   (build-expression->derivation store name system builder inputs
                                 #:outputs outputs