diff --git a/guix/packages.scm b/guix/packages.scm
index b4fc026dbb682e9e39105ce9072f0241a2bdda35..97a24643091d405dcb8e67580838bcc5f71d1c9e 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -345,8 +345,12 @@ (define (tarxz-name file-name)
   (define patch-inputs
     (map (lambda (number patch)
            (list (string-append "patch" (number->string number))
-                 (add-to-store store (basename patch) #t
-                               "sha256" patch)))
+                 (match patch
+                   ((? string?)
+                    (add-to-store store (basename patch) #t
+                                  "sha256" patch))
+                   ((? origin?)
+                    (package-source-derivation store patch)))))
          (iota (length patches))
 
          patches))