diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 710b0d6cefc56bdaa7c6bcc97f6e97f10ab6ed5b..f2aafa43c92007df8b8a385fa0900151d6c69934 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -2654,6 +2654,30 @@ (define-public rust-socket2
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-sourcefile
+  (package
+    (name "rust-sourcefile")
+    (version "0.1.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "sourcefile" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1lwa6973zs4bgj29my7agfjgk4nw9hp6j7dfnr13nid85fw7rxsb"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-development-inputs
+       (("rust-tempfile" ,rust-tempfile))))
+    (home-page "https://github.com/derekdreery/sourcefile-rs")
+    (synopsis "Concatenate source from multiple files")
+    (description
+     "A library for concatenating source from multiple files, whilst keeping
+track of where each new file and line starts.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-spin
   (package
     (name "rust-spin")