diff --git a/guix/build/compile.scm b/guix/build/compile.scm
index 6f15ba57896c7c34ac272ae56f2baa90041e16f0..ea0c36fa337bac8b992d533f5dbde6617ce18bf8 100644
--- a/guix/build/compile.scm
+++ b/guix/build/compile.scm
@@ -24,7 +24,7 @@ (define-module (guix build compile)
   #:use-module (system base target)
   #:use-module (system base compile)
   #:use-module (system base message)
-  #:use-module (guix discovery)
+  #:use-module (guix modules)
   #:use-module (guix build utils)
   #:export (%default-optimizations
             %lightweight-optimizations
diff --git a/guix/discovery.scm b/guix/discovery.scm
index c861614b8a7ef83c1a96e2f9cd1e8642512a6ca7..7b575790237f2a3911766ec271e0bb9002a64b35 100644
--- a/guix/discovery.scm
+++ b/guix/discovery.scm
@@ -18,15 +18,14 @@
 
 (define-module (guix discovery)
   #:use-module (guix ui)
+  #:use-module (guix modules)
   #:use-module (guix combinators)
   #:use-module (guix build syscalls)
   #:use-module (srfi srfi-1)
   #:use-module (ice-9 match)
   #:use-module (ice-9 vlist)
   #:use-module (ice-9 ftw)
-  #:export (file-name->module-name
-
-            scheme-modules
+  #:export (scheme-modules
             fold-modules
             all-modules
             fold-module-public-variables))
@@ -90,13 +89,6 @@ (define (entry-type name properties)
                                directory (strerror errno)))
                     '())))))
 
-(define file-name->module-name
-  (let ((not-slash (char-set-complement (char-set #\/))))
-    (lambda (file)
-      "Return the module name (a list of symbols) corresponding to FILE."
-      (map string->symbol
-           (string-tokenize (string-drop-right file 4) not-slash)))))
-
 (define* (scheme-modules directory #:optional sub-directory)
   "Return the list of Scheme modules available under DIRECTORY.
 Optionally, narrow the search to SUB-DIRECTORY."
diff --git a/guix/modules.scm b/guix/modules.scm
index 19a4acd76c55280679e99124ce9a3d7d4f4abeed..6c602eda48429eb50b78ed75bb566660c61e448a 100644
--- a/guix/modules.scm
+++ b/guix/modules.scm
@@ -26,6 +26,9 @@ (define-module (guix modules)
   #:export (missing-dependency-error?
             missing-dependency-module
 
+            file-name->module-name
+            module-name->file-name
+
             source-module-closure
             live-module-closure
             guix-module-name?))
@@ -93,6 +96,13 @@ (define module-file-dependencies
           (_
            '()))))))
 
+(define file-name->module-name
+  (let ((not-slash (char-set-complement (char-set #\/))))
+    (lambda (file)
+      "Return the module name (a list of symbols) corresponding to FILE."
+      (map string->symbol
+           (string-tokenize (string-drop-right file 4) not-slash)))))
+
 (define (module-name->file-name module)
   "Return the file name for MODULE."
   (string-append (string-join (map symbol->string module) "/")