Revert "services: configuration: Revert to a working ‘guix home’."

This reverts commit 39e4e00f75, with fixes for
the guix home issues reported and another one found while reconfiguring berlin
in the subsequent commit.
This commit is contained in:
Maxim Cournoyer 2022-11-16 23:09:17 -05:00
parent 07dddca27b
commit 44554e7133
No known key found for this signature in database
GPG key ID: 1260E46482E63562
5 changed files with 115 additions and 38 deletions

View file

@ -19019,20 +19019,33 @@ words, it is possible to define services that provide additional mcron
jobs to run. jobs to run.
@end defvr @end defvr
@c Generated via (generate-documentation) at the bottom of (gnu services
@c mcron).
@c %start of fragment
@deftp {Data Type} mcron-configuration @deftp {Data Type} mcron-configuration
Data type representing the configuration of mcron. Available @code{mcron-configuration} fields are:
@table @asis @table @asis
@item @code{mcron} (default: @var{mcron}) @item @code{mcron} (default: @code{mcron}) (type: file-like)
The mcron package to use. The mcron package to use.
@item @code{jobs} @item @code{jobs} (default: @code{()}) (type: list-of-gexps)
This is a list of gexps (@pxref{G-Expressions}), where each gexp This is a list of gexps (@pxref{G-Expressions}), where each gexp
corresponds to an mcron job specification (@pxref{Syntax, mcron job corresponds to an mcron job specification (@pxref{Syntax, mcron job
specifications,, mcron,GNU@tie{}mcron}). 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.
@end table @end table
@end deftp @end deftp
@c %end of fragment
@node Log Rotation @node Log Rotation
@subsection Log Rotation @subsection Log Rotation
@ -41068,18 +41081,32 @@ jobs to run.
@end defvr @end defvr
@deftp {Data Type} home-mcron-configuration @deftp {Data Type} home-mcron-configuration
Data type representing the configuration of mcron. Available @code{home-mcron-configuration} fields are:
@c Auto-generated with (gnu home services mcron)'s
@c generate-documentation procedure.
@c %start of fragment
@table @asis @table @asis
@item @code{mcron} (default: @var{mcron}) @item @code{mcron} (default: @code{mcron}) (type: file-like)
The mcron package to use. The mcron package to use.
@item @code{jobs} @item @code{jobs} (default: @code{()}) (type: list-of-gexps)
This is a list of gexps (@pxref{G-Expressions}), where each gexp This is a list of gexps (@pxref{G-Expressions}), where each gexp
corresponds to an mcron job specification (@pxref{Syntax, mcron job corresponds to an mcron job specification (@pxref{Syntax, mcron job
specifications,, mcron,GNU@tie{}mcron}). 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.
@end table @end table
@end deftp @end deftp
@c %end of fragment
@node Power Management Home Services @node Power Management Home Services
@subsection Power Management Home Services @subsection Power Management Home Services

View file

@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in> ;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -20,6 +21,7 @@
(define-module (gnu home services mcron) (define-module (gnu home services mcron)
#:use-module (gnu packages guile-xyz) #:use-module (gnu packages guile-xyz)
#:use-module (gnu home services) #:use-module (gnu home services)
#:use-module (gnu services configuration)
#:use-module (gnu services shepherd) #:use-module (gnu services shepherd)
#:use-module (gnu home services shepherd) #:use-module (gnu home services shepherd)
#:use-module (guix records) #:use-module (guix records)
@ -53,13 +55,23 @@ (define-module (gnu home services mcron)
;; ;;
;;; Code: ;;; Code:
(define-record-type* <home-mcron-configuration> home-mcron-configuration (define list-of-gexps?
make-home-mcron-configuration (list-of gexp?))
home-mcron-configuration?
(package home-mcron-configuration-package ; package (define-configuration/no-serialization home-mcron-configuration
(default mcron)) (mcron (file-like mcron) "The mcron package to use.")
(jobs home-mcron-configuration-jobs ; list of jobs (jobs
(default '()))) (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 job-files (@@ (gnu services mcron) job-files)) (define job-files (@@ (gnu services mcron) job-files))
(define shepherd-schedule-action (define shepherd-schedule-action
@ -69,7 +81,7 @@ (define home-mcron-shepherd-services
(match-lambda (match-lambda
(($ <home-mcron-configuration> mcron '()) ; no jobs to run (($ <home-mcron-configuration> mcron '()) ; no jobs to run
'()) '())
(($ <home-mcron-configuration> mcron jobs) (($ <home-mcron-configuration> mcron jobs log? log-format)
(let ((files (job-files mcron jobs))) (let ((files (job-files mcron jobs)))
(list (shepherd-service (list (shepherd-service
(documentation "User cron jobs.") (documentation "User cron jobs.")
@ -81,7 +93,11 @@ (define home-mcron-shepherd-services
(ice-9 match) (ice-9 match)
,@%default-modules)) ,@%default-modules))
(start #~(make-forkexec-constructor (start #~(make-forkexec-constructor
(list #$(file-append mcron "/bin/mcron") #$@files) (list (string-append #$mcron "/bin/mcron")
#$@(if log?
#~("--log" "--log-format" #$log-format)
#~())
#$@files)
#:log-file (string-append #:log-file (string-append
(or (getenv "XDG_LOG_HOME") (or (getenv "XDG_LOG_HOME")
(format #f "~a/.local/var/log" (format #f "~a/.local/var/log"
@ -91,7 +107,7 @@ (define home-mcron-shepherd-services
(actions (actions
(list (shepherd-schedule-action mcron files))))))))) (list (shepherd-schedule-action mcron files)))))))))
(define home-mcron-profile (compose list home-mcron-configuration-package)) (define home-mcron-profile (compose list home-mcron-configuration-mcron))
(define (home-mcron-extend config jobs) (define (home-mcron-extend config jobs)
(home-mcron-configuration (home-mcron-configuration
@ -113,3 +129,12 @@ (define home-mcron-service-type
(default-value (home-mcron-configuration)) (default-value (home-mcron-configuration))
(description (description
"Install and configure the GNU mcron cron job manager."))) "Install and configure the GNU mcron cron job manager.")))
;;;
;;; Generate documentation.
;;;
(define (generate-doc)
(configuration->documentation 'home-mcron-configuration))
;;; mcron.scm ends here

View file

@ -242,17 +242,17 @@ (define-record-type* #,(id #'stem #'< #'stem #'>)
stem stem
#,(id #'stem #'make- #'stem) #,(id #'stem #'make- #'stem)
#,(id #'stem #'stem #'?) #,(id #'stem #'stem #'?)
(%location #,(id #'stem #'stem #'-location)
(default (and=> (current-source-location)
source-properties->location))
(innate))
#,@(map (lambda (name getter def) #,@(map (lambda (name getter def)
#`(#,name #,getter (default #,def) #`(#,name #,getter (default #,def)
(sanitize (sanitize
#,(id #'stem #'validate- #'stem #'- name)))) #,(id #'stem #'validate- #'stem #'- name))))
#'(field ...) #'(field ...)
#'(field-getter ...) #'(field-getter ...)
#'(field-default ...))) #'(field-default ...))
(%location #,(id #'stem #'stem #'-location)
(default (and=> (current-source-location)
source-properties->location))
(innate)))
(define #,(id #'stem #'stem #'-fields) (define #,(id #'stem #'stem #'-fields)
(list (configuration-field (list (configuration-field

View file

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; 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. ;;; This file is part of GNU Guix.
;;; ;;;
@ -18,6 +19,7 @@
(define-module (gnu services mcron) (define-module (gnu services mcron)
#:use-module (gnu services) #:use-module (gnu services)
#:use-module (gnu services configuration)
#:use-module (gnu services shepherd) #:use-module (gnu services shepherd)
#:use-module (gnu packages guile-xyz) #:use-module (gnu packages guile-xyz)
#:use-module (guix deprecation) #:use-module (guix deprecation)
@ -30,6 +32,8 @@ (define-module (gnu services mcron)
mcron-configuration? mcron-configuration?
mcron-configuration-mcron mcron-configuration-mcron
mcron-configuration-jobs mcron-configuration-jobs
mcron-configuration-log?
mcron-configuration-log-format
mcron-service-type)) mcron-service-type))
@ -48,13 +52,23 @@ (define-module (gnu services mcron)
;;; ;;;
;;; Code: ;;; Code:
(define-record-type* <mcron-configuration> mcron-configuration (define list-of-gexps?
make-mcron-configuration (list-of gexp?))
mcron-configuration?
(mcron mcron-configuration-mcron ;file-like (define-configuration/no-serialization mcron-configuration
(default mcron)) (mcron (file-like mcron) "The mcron package to use.")
(jobs mcron-configuration-jobs ;list of <mcron-job> (jobs
(default '()))) (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 (job-files mcron jobs) (define (job-files mcron jobs)
"Return a list of file-like object for JOBS, a list of gexps." "Return a list of file-like object for JOBS, a list of gexps."
@ -126,7 +140,7 @@ (define mcron-shepherd-services
(match-lambda (match-lambda
(($ <mcron-configuration> mcron ()) ;nothing to do! (($ <mcron-configuration> mcron ()) ;nothing to do!
'()) '())
(($ <mcron-configuration> mcron jobs) (($ <mcron-configuration> mcron jobs log? log-format)
(let ((files (job-files mcron jobs))) (let ((files (job-files mcron jobs)))
(list (shepherd-service (list (shepherd-service
(provision '(mcron)) (provision '(mcron))
@ -138,7 +152,11 @@ (define mcron-shepherd-services
(ice-9 match) (ice-9 match)
,@%default-modules)) ,@%default-modules))
(start #~(make-forkexec-constructor (start #~(make-forkexec-constructor
(list (string-append #$mcron "/bin/mcron") #$@files) (list (string-append #$mcron "/bin/mcron")
#$@(if log?
#~("--log" "--log-format" #$log-format)
#~())
#$@files)
;; Disable auto-compilation of the job files and set a ;; Disable auto-compilation of the job files and set a
;; sane value for 'PATH'. ;; sane value for 'PATH'.
@ -172,4 +190,11 @@ (define mcron-service-type
jobs))))) jobs)))))
(default-value (mcron-configuration)))) ;empty job list (default-value (mcron-configuration)))) ;empty job list
;;;
;;; Generate documentation.
;;;
(define (generate-doc)
(configuration->documentation 'mcron-configuration))
;;; mcron.scm ends here ;;; mcron.scm ends here

View file

@ -622,8 +622,8 @@ (define-configuration zabbix-front-end-configuration
(define (zabbix-front-end-config config) (define (zabbix-front-end-config config)
(match-record config <zabbix-front-end-configuration> (match-record config <zabbix-front-end-configuration>
(%location db-host db-port db-name db-user db-password db-secret-file (db-host db-port db-name db-user db-password db-secret-file
zabbix-host zabbix-port) zabbix-host zabbix-port %location)
(mixed-text-file "zabbix.conf.php" (mixed-text-file "zabbix.conf.php"
"\ "\
<?php <?php