diff --git a/guix/ui.scm b/guix/ui.scm index beb41e925a..7338b82401 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -240,11 +240,13 @@ interpreted." (define %guix-user-module ;; Module in which user expressions are evaluated. - (let ((module (make-module))) - (beautify-user-module! module) - ;; Use (guix gexp) so that one can use #~ & co. - (module-use! module (resolve-interface '(guix gexp))) - module)) + ;; Compute lazily to avoid circularity with (guix gexp). + (delay + (let ((module (make-module))) + (beautify-user-module! module) + ;; Use (guix gexp) so that one can use #~ & co. + (module-use! module (resolve-interface '(guix gexp))) + module))) (define (read/eval str) "Read and evaluate STR, raising an error if something goes wrong." @@ -256,7 +258,7 @@ interpreted." str args))))) (catch #t (lambda () - (eval exp %guix-user-module)) + (eval exp (force %guix-user-module))) (lambda args (leave (_ "failed to evaluate expression `~a': ~s~%") exp args)))))