diff options
Diffstat (limited to 'dotfiles/.dmd.d/init.scm')
-rw-r--r-- | dotfiles/.dmd.d/init.scm | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/dotfiles/.dmd.d/init.scm b/dotfiles/.dmd.d/init.scm new file mode 100644 index 0000000..420c7cf --- /dev/null +++ b/dotfiles/.dmd.d/init.scm @@ -0,0 +1,38 @@ +(use-modules (ice-9 match)) + +(define-syntax-rule (forever body ...) + (while #t body ...)) + +(define-syntax-rule (with-fork body ...) + (match (primitive-fork) + (0 (begin body ...)) + (pid pid))) + +(define (simple-service program) + (make <service> + #:provides (list (string->symbol program)) + #:requires '() + #:start (make-forkexec-constructor (list program)) + #:stop (make-kill-destructor))) + +(register-services + (make <service> + #:provides '(offlineimap) + #:requires '() + #:start (lambda args + (with-fork + ;; OfflineIMAP's "autorefresh" mode consistently + ;; consumes all of the RAM on my machine, so let's just + ;; run it in a loop instead. + (forever + (system* "offlineimap") + (sleep 20)))) + #:stop (make-kill-destructor)) + (simple-service "mpd") + (simple-service "mpdscribble")) + +;; Send dmd into the background +(action 'dmd 'daemonize) + +;; Services to start when dmd starts: +(for-each start '(offlineimap mpd mpdscribble)) |