services: configuration: Add some commonly used predicates.
* gnu/services/configuration.scm (list-of-packages?, list-of-symbols?): New predicate. * gnu/services/audio.scm (list-of-symbol?): Remove. * gnu/services/telephony.scm (string-list?): Remove. (serialize-string-list): Rename to … (serialize-list-of-strings): … this. (account-fingerprint-list?, jami-account-list?): Use list-of. * doc/guix.texi: Update it. Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
This commit is contained in:
		
							parent
							
								
									3872ecf274
								
							
						
					
					
						commit
						00a28bc435
					
				
					 4 changed files with 29 additions and 21 deletions
				
			
		| 
						 | 
				
			
			@ -28188,7 +28188,7 @@ to maintain communication between devices on such network even when the
 | 
			
		|||
connection to the Internet has been lost.  When left unspecified,
 | 
			
		||||
the value from the account archive prevails.
 | 
			
		||||
 | 
			
		||||
@item @code{bootstrap-hostnames} (type: maybe-string-list)
 | 
			
		||||
@item @code{bootstrap-hostnames} (type: maybe-list-of-strings)
 | 
			
		||||
A list of hostnames or IPs pointing to OpenDHT nodes, that should be
 | 
			
		||||
used to initially join the OpenDHT network.  When left unspecified, the
 | 
			
		||||
value from the account archive prevails.
 | 
			
		||||
| 
						 | 
				
			
			@ -34509,7 +34509,7 @@ The group to run mpd as.
 | 
			
		|||
 | 
			
		||||
The default @code{%mpd-group} is a system group with name ``mpd''.
 | 
			
		||||
 | 
			
		||||
@item @code{shepherd-requirement} (default: @code{'()}) (type: list-of-symbol)
 | 
			
		||||
@item @code{shepherd-requirement} (default: @code{'()}) (type: list-of-symbols)
 | 
			
		||||
A list of symbols naming Shepherd services that this service
 | 
			
		||||
will depend on.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -34759,7 +34759,7 @@ Available @code{mympd-configuration} fields are:
 | 
			
		|||
@item @code{package} (default: @code{mympd}) (type: file-like)
 | 
			
		||||
The package object of the myMPD server.
 | 
			
		||||
 | 
			
		||||
@item @code{shepherd-requirement} (default: @code{'()}) (type: list-of-symbol)
 | 
			
		||||
@item @code{shepherd-requirement} (default: @code{'()}) (type: list-of-symbols)
 | 
			
		||||
This is a list of symbols naming Shepherd services that this service
 | 
			
		||||
will depend on.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -138,9 +138,6 @@
 | 
			
		|||
                                   str)
 | 
			
		||||
                               #\-) "_")))
 | 
			
		||||
 | 
			
		||||
(define list-of-symbol?
 | 
			
		||||
  (list-of symbol?))
 | 
			
		||||
 | 
			
		||||
;; Helpers for deprecated field types, to be removed later.
 | 
			
		||||
(define %lazy-group (make-symbol "%lazy-group"))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -428,7 +425,7 @@ to be appended to the audio output configuration.")
 | 
			
		|||
   (sanitizer mpd-group-sanitizer))
 | 
			
		||||
 | 
			
		||||
  (shepherd-requirement
 | 
			
		||||
   (list-of-symbol '())
 | 
			
		||||
   (list-of-symbols '())
 | 
			
		||||
   "This is a list of symbols naming Shepherd services that this service
 | 
			
		||||
will depend on."
 | 
			
		||||
   empty-serializer)
 | 
			
		||||
| 
						 | 
				
			
			@ -763,7 +760,7 @@ user-group instead~%"))
 | 
			
		|||
    empty-serializer)
 | 
			
		||||
 | 
			
		||||
  (shepherd-requirement
 | 
			
		||||
   (list-of-symbol '())
 | 
			
		||||
   (list-of-symbols '())
 | 
			
		||||
   "This is a list of symbols naming Shepherd services that this service
 | 
			
		||||
will depend on."
 | 
			
		||||
   empty-serializer)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -80,7 +80,9 @@
 | 
			
		|||
            interpose
 | 
			
		||||
            list-of
 | 
			
		||||
 | 
			
		||||
            list-of-packages?
 | 
			
		||||
            list-of-strings?
 | 
			
		||||
            list-of-symbols?
 | 
			
		||||
            alist?
 | 
			
		||||
            serialize-file-like
 | 
			
		||||
            text-config?
 | 
			
		||||
| 
						 | 
				
			
			@ -500,6 +502,11 @@ DELIMITER interposed LS.  Support 'infix and 'suffix GRAMMAR values."
 | 
			
		|||
                          (cons delimiter acc))))
 | 
			
		||||
              '() ls))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
;;;
 | 
			
		||||
;;; Commonly used predicates
 | 
			
		||||
;;;
 | 
			
		||||
 | 
			
		||||
(define (list-of pred?)
 | 
			
		||||
  "Return a procedure that takes a list and check if all the elements of
 | 
			
		||||
the list result in @code{#t} when applying PRED? on them."
 | 
			
		||||
| 
						 | 
				
			
			@ -508,10 +515,20 @@ the list result in @code{#t} when applying PRED? on them."
 | 
			
		|||
          (every pred? x)
 | 
			
		||||
          #f)))
 | 
			
		||||
 | 
			
		||||
(define list-of-packages?
 | 
			
		||||
  (list-of package?))
 | 
			
		||||
 | 
			
		||||
(define list-of-strings?
 | 
			
		||||
  (list-of string?))
 | 
			
		||||
 | 
			
		||||
(define list-of-symbols?
 | 
			
		||||
  (list-of symbol?))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
;;;
 | 
			
		||||
;;; Special serializers
 | 
			
		||||
;;;
 | 
			
		||||
 | 
			
		||||
(define alist?
 | 
			
		||||
  (list-of pair?))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -117,15 +117,10 @@
 | 
			
		|||
  (or (string? val)
 | 
			
		||||
      (computed-file? val)))
 | 
			
		||||
 | 
			
		||||
(define (string-list? val)
 | 
			
		||||
  (and (list? val)
 | 
			
		||||
       (and-map string? val)))
 | 
			
		||||
(define account-fingerprint-list?
 | 
			
		||||
  (list-of account-fingerprint?))
 | 
			
		||||
 | 
			
		||||
(define (account-fingerprint-list? val)
 | 
			
		||||
  (and (list? val)
 | 
			
		||||
       (and-map account-fingerprint? val)))
 | 
			
		||||
 | 
			
		||||
(define-maybe string-list)
 | 
			
		||||
(define-maybe list-of-strings)
 | 
			
		||||
 | 
			
		||||
(define-maybe/no-serialization account-fingerprint-list)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -135,7 +130,7 @@
 | 
			
		|||
 | 
			
		||||
;;; The following serializers are used to derive an account details alist from
 | 
			
		||||
;;; a <jami-account> record.
 | 
			
		||||
(define (serialize-string-list _ val)
 | 
			
		||||
(define (serialize-list-of-strings _ val)
 | 
			
		||||
  (string-join val ";"))
 | 
			
		||||
 | 
			
		||||
(define (serialize-boolean _ val)
 | 
			
		||||
| 
						 | 
				
			
			@ -188,7 +183,7 @@ maintain communication between devices on such network even when the
 | 
			
		|||
connection to the the Internet has been lost.  When left unspecified, the
 | 
			
		||||
value from the account archive prevails.")
 | 
			
		||||
  (bootstrap-hostnames
 | 
			
		||||
   maybe-string-list
 | 
			
		||||
   maybe-list-of-strings
 | 
			
		||||
   "A list of hostnames or IPs pointing to OpenDHT nodes, that should be used
 | 
			
		||||
to initially join the OpenDHT network.  When left unspecified, the value from
 | 
			
		||||
the account archive prevails.")
 | 
			
		||||
| 
						 | 
				
			
			@ -220,9 +215,8 @@ SET-ACCOUNT-DETAILS."
 | 
			
		|||
 | 
			
		||||
  (list-transduce jami-account-transducer rcons jami-account-fields))
 | 
			
		||||
 | 
			
		||||
(define (jami-account-list? val)
 | 
			
		||||
  (and (list? val)
 | 
			
		||||
       (and-map jami-account? val)))
 | 
			
		||||
(define jami-account-list?
 | 
			
		||||
  (list-of jami-account?))
 | 
			
		||||
 | 
			
		||||
(define-maybe/no-serialization jami-account-list)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue