summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu/system/linux-initrd.scm25
-rw-r--r--gnu/system/mapped-devices.scm5
-rw-r--r--gnu/system/vm.scm22
3 files changed, 19 insertions, 33 deletions
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm
index bbaa5c0f89..174239a566 100644
--- a/gnu/system/linux-initrd.scm
+++ b/gnu/system/linux-initrd.scm
@@ -27,6 +27,7 @@
                 #:select (%store-prefix))
   #:use-module ((guix derivations)
                 #:select (derivation->output-path))
+  #:use-module (guix modules)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages guile)
@@ -66,10 +67,8 @@ the derivations referenced by EXP are automatically copied to the initrd."
   (mlet %store-monad ((init (gexp->script "init" exp
                                           #:guile guile)))
     (define builder
-      (with-imported-modules '((guix cpio)
-                               (guix build utils)
-                               (guix build store-copy)
-                               (gnu build linux-initrd))
+      (with-imported-modules (source-module-closure
+                              '((gnu build linux-initrd)))
         #~(begin
             (use-modules (gnu build linux-initrd))
 
@@ -88,9 +87,9 @@ the derivations referenced by EXP are automatically copied to the initrd."
   "Return a flat directory containing the Linux kernel modules listed in
 MODULES and taken from LINUX."
   (define build-exp
-    (with-imported-modules '((guix build utils)
-                             (guix elf)
-                             (gnu build linux-modules))
+    (with-imported-modules (source-module-closure
+                            '((guix build utils)
+                              (gnu build linux-modules)))
       #~(begin
           (use-modules (ice-9 match) (ice-9 regex)
                        (srfi srfi-1)
@@ -223,13 +222,11 @@ loaded at boot time in the order in which they appear."
   (mlet %store-monad ((kodir (flat-linux-module-directory linux
                                                           linux-modules)))
     (expression->initrd
-     (with-imported-modules '((guix build bournish)
-                              (guix build utils)
-                              (guix build syscalls)
-                              (gnu build linux-boot)
-                              (gnu build linux-modules)
-                              (gnu build file-systems)
-                              (guix elf))
+     (with-imported-modules (source-module-closure
+                             '((gnu build linux-boot)
+                               (guix build utils)
+                               (guix build bournish)
+                               (gnu build file-systems)))
        #~(begin
            (use-modules (gnu build linux-boot)
                         (guix build utils)
diff --git a/gnu/system/mapped-devices.scm b/gnu/system/mapped-devices.scm
index 7b91fcfc41..2ce35eaa07 100644
--- a/gnu/system/mapped-devices.scm
+++ b/gnu/system/mapped-devices.scm
@@ -20,6 +20,7 @@
 (define-module (gnu system mapped-devices)
   #:use-module (guix gexp)
   #:use-module (guix records)
+  #:use-module (guix modules)
   #:use-module (gnu services)
   #:use-module (gnu services shepherd)
   #:autoload   (gnu packages cryptsetup) (cryptsetup)
@@ -95,8 +96,8 @@
 (define (open-luks-device source target)
   "Return a gexp that maps SOURCE to TARGET as a LUKS device, using
 'cryptsetup'."
-  (with-imported-modules '((gnu build file-systems)
-                           (guix build bournish))
+  (with-imported-modules (source-module-closure
+                          '((gnu build file-systems)))
     #~(let ((source #$source))
         ;; XXX: 'use-modules' should be at the top level.
         (use-modules (rnrs bytevectors)           ;bytevector?
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index c31e3a80ef..4c53edc0cf 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -26,6 +26,7 @@
   #:use-module (guix packages)
   #:use-module (guix monads)
   #:use-module (guix records)
+  #:use-module (guix modules)
 
   #:use-module ((gnu build vm)
                 #:select (qemu-command))
@@ -90,21 +91,6 @@
           (options "trans=virtio")
           (check? #f))))
 
-(define %vm-module-closure
-  ;; The closure of (gnu build vm), roughly.
-  ;; FIXME: Compute it automatically.
-  '((gnu build vm)
-    (gnu build install)
-    (gnu build linux-boot)
-    (gnu build linux-modules)
-    (gnu build file-systems)
-    (guix elf)
-    (guix records)
-    (guix build utils)
-    (guix build syscalls)
-    (guix build bournish)
-    (guix build store-copy)))
-
 (define* (expression->derivation-in-linux-vm name exp
                                              #:key
                                              (system (%current-system))
@@ -148,7 +134,8 @@ made available under the /xchg CIFS share."
 
     (define builder
       ;; Code that launches the VM that evaluates EXP.
-      (with-imported-modules %vm-module-closure
+      (with-imported-modules (source-module-closure '((guix build utils)
+                                                      (gnu build vm)))
         #~(begin
             (use-modules (guix build utils)
                          (gnu build vm))
@@ -205,7 +192,8 @@ register INPUTS in the store database of the image so that Guix can be used in
 the image."
   (expression->derivation-in-linux-vm
    name
-   (with-imported-modules %vm-module-closure
+   (with-imported-modules (source-module-closure '((gnu build vm)
+                                                   (guix build utils)))
      #~(begin
          (use-modules (gnu build vm)
                       (guix build utils))