diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm
index 01cc3f129e976cc7019a7875ed3472e798136c2d..0a716a95fd5548084f40642f94c30de357189ef5 100755
--- a/guix/scripts/substitute.scm
+++ b/guix/scripts/substitute.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Nikita Karetnikov <nikita@karetnikov.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -204,7 +204,10 @@ (define* (fetch uri #:key (buffered? #t) (timeout? #t) (quiet-404? #f))
                (set! port (open-socket-for-uri uri))
                (unless buffered?
                  (setvbuf port _IONBF)))
-             (http-fetch uri #:text? #f #:port port))))))))
+             (http-fetch uri #:text? #f #:port port))))))
+    (else
+     (leave (_ "unsupported substitute URI scheme: ~a~%")
+            (uri->string uri)))))
 
 (define-record-type <cache-info>
   (%make-cache-info url store-directory wants-mass-query?)