(define (make-user-module) (let ((m (make-fresh-user-module))) ;; The typical configuration file wants to do '(make ...)', and ;; '(register-services ...)', so provide the relevant bindings by default. (module-use! m (resolve-interface '(oop goops))) (module-use! m (resolve-interface '(shepherd service))) m)) (define (load-in-user-module) (let ((user-module (make-user-module))) (save-module-excursion (lambda () (set-current-module user-module) (use-modules (nongnu services swarm-utils)) ;; this works, i.e. *log-directory* is not unbound upon execution: ;; (eval '(lambda () ;; *log-directory*) ;; user-module) (lambda () *log-directory*) )))) (format #t "the result is: ~S~%" ((load-in-user-module))) $ ./pre-inst-env guix repl -L ../nonguix -- /tmp/x.scm ;;; note: source file ../nonguix/nongnu/services/swarm-utils.scm ;;; newer than compiled /home/alendvai/.cache/guile/ccache/3.0-LE-8-4.5/home/alendvai/workspace/guix/nonguix/nongnu/services/swarm-utils.scm.go the result is: #< 7f958c58b140 proc: #> $ ./pre-inst-env guix repl -L ../nonguix -- /tmp/x.scm ;;; note: source file ../nonguix/nongnu/services/swarm-utils.scm ;;; newer than compiled /home/alendvai/.cache/guile/ccache/3.0-LE-8-4.5/home/alendvai/workspace/guix/nonguix/nongnu/services/swarm-utils.scm.go Backtrace: 4 (primitive-load "/tmp/x.scm") In ice-9/eval.scm: 202:51 3 (_ _) 223:20 2 (proc #(#(#))) In unknown file: 1 (%resolve-variable (7 . *log-directory*) #) In ice-9/boot-9.scm: 1685:16 0 (raise-exception _ #:continuable? _) ice-9/boot-9.scm:1685:16: In procedure raise-exception: error: *log-directory*: unbound variable