diff options
-rw-r--r-- | doc/guix.texi | 45 | ||||
-rw-r--r-- | gnu/home/services/mcron.scm | 47 | ||||
-rw-r--r-- | gnu/services/configuration.scm | 10 | ||||
-rw-r--r-- | gnu/services/mcron.scm | 47 | ||||
-rw-r--r-- | gnu/services/monitoring.scm | 4 |
5 files changed, 38 insertions, 115 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index ef3b8e127e..4d974be53e 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -19019,33 +19019,20 @@ words, it is possible to define services that provide additional mcron jobs to run. @end defvr -@c Generated via (generate-documentation) at the bottom of (gnu services -@c mcron). -@c %start of fragment @deftp {Data Type} mcron-configuration -Available @code{mcron-configuration} fields are: +Data type representing the configuration of mcron. @table @asis -@item @code{mcron} (default: @code{mcron}) (type: file-like) +@item @code{mcron} (default: @var{mcron}) The mcron package to use. -@item @code{jobs} (default: @code{()}) (type: list-of-gexps) +@item @code{jobs} This is a list of gexps (@pxref{G-Expressions}), where each gexp corresponds to an mcron job specification (@pxref{Syntax, mcron job -specifications,, mcron,GNU@tie{}mcron}). - -@item @code{log?} (default: @code{#t}) (type: boolean) -Log messages to standard output. - -@item @code{log-format} (default: @code{"~1@@*~a ~a: ~a~%"}) (type: string) -@code{(ice-9 format)} format string for log messages. The default value -produces messages like "@samp{@var{pid} @var{name}: @var{message}"} -(@pxref{Invoking mcron, Invoking,, mcron,GNU@tie{}mcron}). Each message -is also prefixed by a timestamp by GNU Shepherd. - +specifications,, mcron, GNU@tie{}mcron}). @end table @end deftp -@c %end of fragment + @node Log Rotation @subsection Log Rotation @@ -41081,32 +41068,18 @@ jobs to run. @end defvr @deftp {Data Type} home-mcron-configuration -Available @code{home-mcron-configuration} fields are: +Data type representing the configuration of mcron. -@c Auto-generated with (gnu home services mcron)'s -@c generate-documentation procedure. -@c %start of fragment @table @asis -@item @code{mcron} (default: @code{mcron}) (type: file-like) +@item @code{mcron} (default: @var{mcron}) The mcron package to use. -@item @code{jobs} (default: @code{()}) (type: list-of-gexps) +@item @code{jobs} This is a list of gexps (@pxref{G-Expressions}), where each gexp corresponds to an mcron job specification (@pxref{Syntax, mcron job -specifications,, mcron,GNU@tie{}mcron}). - -@item @code{log?} (default: @code{#t}) (type: boolean) -Log messages to standard output. - -@item @code{log-format} (default: @code{"~1@@*~a ~a: ~a~%"}) (type: string) -@code{(ice-9 format)} format string for log messages. The default value -produces messages like "@samp{@var{pid} @var{name}: @var{message}"} -(@pxref{Invoking mcron, Invoking,, mcron,GNU@tie{}mcron}). Each message -is also prefixed by a timestamp by GNU Shepherd. - +specifications,, mcron, GNU@tie{}mcron}). @end table @end deftp -@c %end of fragment @node Power Management Home Services @subsection Power Management Home Services diff --git a/gnu/home/services/mcron.scm b/gnu/home/services/mcron.scm index 1d294a997c..0b3dbb810b 100644 --- a/gnu/home/services/mcron.scm +++ b/gnu/home/services/mcron.scm @@ -1,7 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2021 Andrew Tropin <andrew@trop.in> ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> -;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -21,7 +20,6 @@ (define-module (gnu home services mcron) #:use-module (gnu packages guile-xyz) #:use-module (gnu home services) - #:use-module (gnu services configuration) #:use-module (gnu services shepherd) #:use-module (gnu home services shepherd) #:use-module (guix records) @@ -55,23 +53,13 @@ ;; ;;; Code: -(define list-of-gexps? - (list-of gexp?)) - -(define-configuration/no-serialization home-mcron-configuration - (mcron (file-like mcron) "The mcron package to use.") - (jobs - (list-of-gexps '()) - "This is a list of gexps (@pxref{G-Expressions}), where each gexp -corresponds to an mcron job specification (@pxref{Syntax, mcron job -specifications,, mcron, GNU@tie{}mcron}).") - (log? (boolean #t) "Log messages to standard output.") - (log-format - (string "~1@*~a ~a: ~a~%") - "@code{(ice-9 format)} format string for log messages. The default value -produces messages like \"@samp{@var{pid} @var{name}: -@var{message}\"} (@pxref{Invoking mcron, Invoking,, mcron, GNU@tie{}mcron}). -Each message is also prefixed by a timestamp by GNU Shepherd.")) +(define-record-type* <home-mcron-configuration> home-mcron-configuration + make-home-mcron-configuration + home-mcron-configuration? + (package home-mcron-configuration-package ; package + (default mcron)) + (jobs home-mcron-configuration-jobs ; list of jobs + (default '()))) (define job-files (@@ (gnu services mcron) job-files)) (define shepherd-schedule-action @@ -81,23 +69,19 @@ Each message is also prefixed by a timestamp by GNU Shepherd.")) (match-lambda (($ <home-mcron-configuration> mcron '()) ; no jobs to run '()) - (($ <home-mcron-configuration> mcron jobs log? log-format) + (($ <home-mcron-configuration> mcron jobs) (let ((files (job-files mcron jobs))) (list (shepherd-service (documentation "User cron jobs.") (provision '(mcron)) (modules `((srfi srfi-1) (srfi srfi-26) - (ice-9 popen) ; for the 'schedule' action + (ice-9 popen) ; for the 'schedule' action (ice-9 rdelim) (ice-9 match) ,@%default-modules)) (start #~(make-forkexec-constructor - (list (string-append #$mcron "/bin/mcron") - #$@(if log? - #~("--log" "--log-format" #$log-format) - #~()) - #$@files) + (list #$(file-append mcron "/bin/mcron") #$@files) #:log-file (string-append (or (getenv "XDG_LOG_HOME") (format #f "~a/.local/var/log" @@ -107,7 +91,7 @@ Each message is also prefixed by a timestamp by GNU Shepherd.")) (actions (list (shepherd-schedule-action mcron files))))))))) -(define home-mcron-profile (compose list home-mcron-configuration-mcron)) +(define home-mcron-profile (compose list home-mcron-configuration-package)) (define (home-mcron-extend config jobs) (home-mcron-configuration @@ -129,12 +113,3 @@ Each message is also prefixed by a timestamp by GNU Shepherd.")) (default-value (home-mcron-configuration)) (description "Install and configure the GNU mcron cron job manager."))) - - -;;; -;;; Generate documentation. -;;; -(define (generate-doc) - (configuration->documentation 'home-mcron-configuration)) - -;;; mcron.scm ends here diff --git a/gnu/services/configuration.scm b/gnu/services/configuration.scm index dacfc52ba9..636c49ccba 100644 --- a/gnu/services/configuration.scm +++ b/gnu/services/configuration.scm @@ -242,17 +242,17 @@ does not have a default value" field kind))) stem #,(id #'stem #'make- #'stem) #,(id #'stem #'stem #'?) + (%location #,(id #'stem #'stem #'-location) + (default (and=> (current-source-location) + source-properties->location)) + (innate)) #,@(map (lambda (name getter def) #`(#,name #,getter (default #,def) (sanitize #,(id #'stem #'validate- #'stem #'- name)))) #'(field ...) #'(field-getter ...) - #'(field-default ...)) - (%location #,(id #'stem #'stem #'-location) - (default (and=> (current-source-location) - source-properties->location)) - (innate))) + #'(field-default ...))) (define #,(id #'stem #'stem #'-fields) (list (configuration-field diff --git a/gnu/services/mcron.scm b/gnu/services/mcron.scm index 52332d6123..23760ebda4 100644 --- a/gnu/services/mcron.scm +++ b/gnu/services/mcron.scm @@ -1,6 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -19,7 +18,6 @@ (define-module (gnu services mcron) #:use-module (gnu services) - #:use-module (gnu services configuration) #:use-module (gnu services shepherd) #:use-module (gnu packages guile-xyz) #:use-module (guix deprecation) @@ -32,8 +30,6 @@ mcron-configuration? mcron-configuration-mcron mcron-configuration-jobs - mcron-configuration-log? - mcron-configuration-log-format mcron-service-type)) @@ -52,23 +48,13 @@ ;;; ;;; Code: -(define list-of-gexps? - (list-of gexp?)) - -(define-configuration/no-serialization mcron-configuration - (mcron (file-like mcron) "The mcron package to use.") - (jobs - (list-of-gexps '()) - "This is a list of gexps (@pxref{G-Expressions}), where each gexp -corresponds to an mcron job specification (@pxref{Syntax, mcron job -specifications,, mcron, GNU@tie{}mcron}).") - (log? (boolean #t) "Log messages to standard output.") - (log-format - (string "~1@*~a ~a: ~a~%") - "@code{(ice-9 format)} format string for log messages. The default value -produces messages like \"@samp{@var{pid} @var{name}: -@var{message}\"} (@pxref{Invoking mcron, Invoking,, mcron, GNU@tie{}mcron}). -Each message is also prefixed by a timestamp by GNU Shepherd.")) +(define-record-type* <mcron-configuration> mcron-configuration + make-mcron-configuration + mcron-configuration? + (mcron mcron-configuration-mcron ;file-like + (default mcron)) + (jobs mcron-configuration-jobs ;list of <mcron-job> + (default '()))) (define (job-files mcron jobs) "Return a list of file-like object for JOBS, a list of gexps." @@ -138,25 +124,21 @@ files." (define mcron-shepherd-services (match-lambda - (($ <mcron-configuration> mcron ()) ;nothing to do! + (($ <mcron-configuration> mcron ()) ;nothing to do! '()) - (($ <mcron-configuration> mcron jobs log? log-format) + (($ <mcron-configuration> mcron jobs) (let ((files (job-files mcron jobs))) (list (shepherd-service (provision '(mcron)) (requirement '(user-processes)) (modules `((srfi srfi-1) (srfi srfi-26) - (ice-9 popen) ;for the 'schedule' action + (ice-9 popen) ;for the 'schedule' action (ice-9 rdelim) (ice-9 match) ,@%default-modules)) (start #~(make-forkexec-constructor - (list (string-append #$mcron "/bin/mcron") - #$@(if log? - #~("--log" "--log-format" #$log-format) - #~()) - #$@files) + (list (string-append #$mcron "/bin/mcron") #$@files) ;; Disable auto-compilation of the job files and set a ;; sane value for 'PATH'. @@ -190,11 +172,4 @@ files." jobs))))) (default-value (mcron-configuration)))) ;empty job list - -;;; -;;; Generate documentation. -;;; -(define (generate-doc) - (configuration->documentation 'mcron-configuration)) - ;;; mcron.scm ends here diff --git a/gnu/services/monitoring.scm b/gnu/services/monitoring.scm index b19c6c9f18..9c8704092c 100644 --- a/gnu/services/monitoring.scm +++ b/gnu/services/monitoring.scm @@ -622,8 +622,8 @@ create it manually.") (define (zabbix-front-end-config config) (match-record config <zabbix-front-end-configuration> - (db-host db-port db-name db-user db-password db-secret-file - zabbix-host zabbix-port %location) + (%location db-host db-port db-name db-user db-password db-secret-file + zabbix-host zabbix-port) (mixed-text-file "zabbix.conf.php" "\ <?php |