diff options
Diffstat (limited to 'gnu/services/dmd.scm')
-rw-r--r-- | gnu/services/dmd.scm | 56 |
1 files changed, 34 insertions, 22 deletions
diff --git a/gnu/services/dmd.scm b/gnu/services/dmd.scm index 161a971edd..8d4c483cc4 100644 --- a/gnu/services/dmd.scm +++ b/gnu/services/dmd.scm @@ -32,27 +32,39 @@ (define (dmd-configuration-file services) "Return the dmd configuration file for SERVICES." - (define config - #~(begin - (use-modules (ice-9 ftw)) - - (register-services - #$@(map (lambda (service) - #~(make <service> - #:docstring '#$(service-documentation service) - #:provides '#$(service-provision service) - #:requires '#$(service-requirement service) - #:respawn? '#$(service-respawn? service) - #:start #$(service-start service) - #:stop #$(service-stop service))) - services)) - - ;; guix-daemon 0.6 aborts if 'PATH' is undefined, so work around it. - (setenv "PATH" "/run/current-system/bin") - - (format #t "starting services...~%") - (for-each start '#$(append-map service-provision services)))) - - (gexp->file "dmd.conf" config)) + (define modules + ;; Extra modules visible to dmd.conf. + '((guix build syscalls))) + + (mlet %store-monad ((modules (imported-modules modules)) + (compiled (compiled-modules modules))) + (define config + #~(begin + (eval-when (expand load eval) + (set! %load-path (cons #$modules %load-path)) + (set! %load-compiled-path + (cons #$compiled %load-compiled-path))) + + (use-modules (ice-9 ftw) + (guix build syscalls)) + + (register-services + #$@(map (lambda (service) + #~(make <service> + #:docstring '#$(service-documentation service) + #:provides '#$(service-provision service) + #:requires '#$(service-requirement service) + #:respawn? '#$(service-respawn? service) + #:start #$(service-start service) + #:stop #$(service-stop service))) + services)) + + ;; guix-daemon 0.6 aborts if 'PATH' is undefined, so work around it. + (setenv "PATH" "/run/current-system/bin") + + (format #t "starting services...~%") + (for-each start '#$(append-map service-provision services)))) + + (gexp->file "dmd.conf" config))) ;;; dmd.scm ends here |