doc: Document the use of `program-file' for mcron jobs.
* doc/guix.texi (Scheduled Job Execution): Explain why using `program-file' for an mcron job can be necessary. Add an example.
This commit is contained in:
parent
d558700a0c
commit
1407ebeaa1
|
@ -12442,6 +12442,40 @@ gexps to introduce job definitions that are passed to mcron
|
||||||
%base-services)))
|
%base-services)))
|
||||||
@end lisp
|
@end lisp
|
||||||
|
|
||||||
|
For more complex jobs defined in Scheme where you need control over the top
|
||||||
|
level, for instance to introduce a @code{use-modules} form that defines syntax
|
||||||
|
(macros), you can move your code to a separate program using the
|
||||||
|
@code{program-file} procedure of the @code{(guix gexp)} module
|
||||||
|
(@pxref{G-Expressions}). The example below illustrates that.
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
(define %battery-alert-job
|
||||||
|
;; Beep when the battery percentage falls below %MIN-LEVEL.
|
||||||
|
#~(job
|
||||||
|
'(next-minute (range 0 60 1))
|
||||||
|
#$(program-file
|
||||||
|
"battery-alert.scm"
|
||||||
|
(with-imported-modules (source-module-closure
|
||||||
|
'((guix build utils)))
|
||||||
|
#~(begin
|
||||||
|
(define %min-level 20)
|
||||||
|
(use-modules (guix build utils)
|
||||||
|
(ice-9 popen)
|
||||||
|
(ice-9 regex)
|
||||||
|
(ice-9 textual-ports)
|
||||||
|
(srfi srfi-2))
|
||||||
|
(setenv "LC_ALL" "C") ;ensure English output
|
||||||
|
(and-let* ((input-pipe (open-pipe*
|
||||||
|
OPEN_READ
|
||||||
|
#$(file-append acpi "/bin/acpi")))
|
||||||
|
(output (get-string-all input-pipe))
|
||||||
|
(m (string-match "Discharging, ([0-9]+)%" output))
|
||||||
|
(level (string->number (match:substring m 1)))
|
||||||
|
((< level %min-level)))
|
||||||
|
(format #t "warning: Battery level is low (~a%)~%" level)
|
||||||
|
(invoke #$(file-append beep "/bin/beep") "-r5")))))))
|
||||||
|
@end lisp
|
||||||
|
|
||||||
@xref{Guile Syntax, mcron job specifications,, mcron, GNU@tie{}mcron},
|
@xref{Guile Syntax, mcron job specifications,, mcron, GNU@tie{}mcron},
|
||||||
for more information on mcron job specifications. Below is the
|
for more information on mcron job specifications. Below is the
|
||||||
reference of the mcron service.
|
reference of the mcron service.
|
||||||
|
|
Loading…
Reference in New Issue