diff --git a/lib/chibi/snow/commands.scm b/lib/chibi/snow/commands.scm
index f68ffc2e..343b60e6 100644
--- a/lib/chibi/snow/commands.scm
+++ b/lib/chibi/snow/commands.scm
@@ -1168,7 +1168,7 @@
          (local-tmp (string-append local-path ".tmp."
                                    (number->string (current-second)) "-"
                                    (number->string (current-process-id))))
-         (repo-str (utf8->string (resource->bytevector repo-uri)))
+         (repo-str (utf8->string (resource->bytevector cfg repo-uri)))
          (repo (guard (exn (else #f))
                  (let ((repo (read (open-input-string repo-str))))
                    `(,(car repo) (url ,repo-uri) ,@(cdr repo))))))
@@ -2128,7 +2128,7 @@
     (install-file cfg (make-path dir src) dest)))
 
 (define (fetch-package cfg url)
-  (resource->bytevector url))
+  (resource->bytevector cfg url))
 
 (define (path-strip-top file)
   (let ((pos (string-find file #\/)))
diff --git a/lib/chibi/snow/utils.scm b/lib/chibi/snow/utils.scm
index 7f437175..0cc8ac39 100644
--- a/lib/chibi/snow/utils.scm
+++ b/lib/chibi/snow/utils.scm
@@ -25,10 +25,12 @@
     (lambda (out)
       (if (bytevector? x) (write-bytevector x out) (display x out)))))
 
-(define (resource->bytevector uri)
+(define (resource->bytevector cfg uri)
   (let ((uri (if (uri? uri) uri (string->path-uri 'http uri))))
     (if (uri-host uri)
-        (call-with-input-url uri port->bytevector)
+        (if (conf-get cfg 'use-curl?)
+            (process->bytevector `(curl --silent ,(uri->string uri)))
+            (call-with-input-url uri port->bytevector))
         (file->bytevector (uri-path uri)))))
 
 ;; path-normalize either a uri or path, and return the result as a string
diff --git a/lib/chibi/snow/utils.sld b/lib/chibi/snow/utils.sld
index be22a815..8d27d58b 100644
--- a/lib/chibi/snow/utils.sld
+++ b/lib/chibi/snow/utils.sld
@@ -11,8 +11,10 @@
           (scheme write)
           (scheme process-context)
           (srfi 1)
+          (chibi config)
           (chibi net http)
           (chibi pathname)
+          (chibi process)
           (chibi string)
           (chibi uri))
   (cond-expand