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.
@end defvr
@c Generated via (generate-documentation) at the bottom of (gnu services
@c mcron).
@c %start of fragment
@deftp {Data Type} mcron-configuration
Data type representing the configuration of mcron.
Available @code{mcron-configuration} fields are:
@table @asis
@item @code{mcron} (default: @var{mcron})
@item @code{mcron} (default: @code{mcron}) (type: file-like)
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
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 deftp
@c %end of fragment
@node Log Rotation
@subsection Log Rotation
@ -41068,18 +41081,32 @@ jobs to run.
@end defvr
@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
@item @code{mcron} (default: @var{mcron})
@item @code{mcron} (default: @code{mcron}) (type: file-like)
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
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 deftp
@c %end of fragment
@node Power Management Home Services
@subsection Power Management Home Services

View file

@ -1,6 +1,7 @@
;;; 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.
;;;
@ -20,6 +21,7 @@
(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)
@ -53,13 +55,23 @@ (define-module (gnu home services mcron)
;;
;;; Code:
(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 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 job-files (@@ (gnu services mcron) job-files))
(define shepherd-schedule-action
@ -69,19 +81,23 @@ (define home-mcron-shepherd-services
(match-lambda
(($ <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)))
(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 #$(file-append mcron "/bin/mcron") #$@files)
(list (string-append #$mcron "/bin/mcron")
#$@(if log?
#~("--log" "--log-format" #$log-format)
#~())
#$@files)
#:log-file (string-append
(or (getenv "XDG_LOG_HOME")
(format #f "~a/.local/var/log"
@ -91,7 +107,7 @@ (define home-mcron-shepherd-services
(actions
(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)
(home-mcron-configuration
@ -113,3 +129,12 @@ (define home-mcron-service-type
(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

View file

@ -242,17 +242,17 @@ (define-record-type* #,(id #'stem #'< #'stem #'>)
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 ...)))
#'(field-default ...))
(%location #,(id #'stem #'stem #'-location)
(default (and=> (current-source-location)
source-properties->location))
(innate)))
(define #,(id #'stem #'stem #'-fields)
(list (configuration-field

View file

@ -1,5 +1,6 @@
;;; 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.
;;;
@ -18,6 +19,7 @@
(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)
@ -30,6 +32,8 @@ (define-module (gnu services mcron)
mcron-configuration?
mcron-configuration-mcron
mcron-configuration-jobs
mcron-configuration-log?
mcron-configuration-log-format
mcron-service-type))
@ -48,13 +52,23 @@ (define-module (gnu services mcron)
;;;
;;; Code:
(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 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 (job-files mcron jobs)
"Return a list of file-like object for JOBS, a list of gexps."
@ -124,21 +138,25 @@ (define (shepherd-schedule-action mcron files)
(define mcron-shepherd-services
(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)))
(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") #$@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
;; sane value for 'PATH'.
@ -172,4 +190,11 @@ (define mcron-service-type
jobs)))))
(default-value (mcron-configuration)))) ;empty job list
;;;
;;; Generate documentation.
;;;
(define (generate-doc)
(configuration->documentation 'mcron-configuration))
;;; mcron.scm ends here

View file

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