diff --git a/guix/build/download.scm b/guix/build/download.scm
index c5dddf83de934b796a607eb67266cb20ea355f2e..e3d52445902a6a9a966471b8a4b93d21e7329ae3 100644
--- a/guix/build/download.scm
+++ b/guix/build/download.scm
@@ -241,10 +241,8 @@ (define (nar-uri-abbreviation uri)
 (define* (ftp-fetch uri file #:key timeout)
   "Fetch data from URI and write it to FILE.  Return FILE on success.  Bail
 out if the connection could not be established in less than TIMEOUT seconds."
-  (let* ((userinfo (string-split (uri-userinfo uri) #\:))
-         (conn (match userinfo
-                 (("")
-                  (ftp-open (uri-host uri) #:timeout timeout))
+  (let* ((conn (match (and=> (uri-userinfo uri)
+                             (cut string-split <> #\:))
                  (((? string? user))
                   (ftp-open (uri-host uri) #:timeout timeout
                                            #:username user))