services: web: Improve nginx formatting for extra-content.

When extra-content is a list, add 4 space indentation and a newline to every
line. If it's a string, continue inserting it directly. This makes the list
serialization behavior more consistent with other services.

* gnu/services/web (default-nginx-config): Support lists.
* doc/guix.texi (Web Services)[nginx-configuration]: Document it.

Change-Id: Iec8614ba3cfc37292a566197e8d39b352b04846a
Signed-off-by: Christopher Baines <mail@cbaines.net>
This commit is contained in:
Richard Sent 2024-06-20 12:42:03 -04:00 committed by Christopher Baines
parent ffdbf1f11e
commit da3e71f472
No known key found for this signature in database
GPG key ID: 5E28A33B0B84F577
2 changed files with 19 additions and 3 deletions

View file

@ -32073,8 +32073,17 @@ configuration. Values may themselves be association lists.
@end lisp
@item @code{extra-content} (default: @code{""})
Extra content for the @code{http} block. Should be string or a string
valued G-expression.
Additional content to be appended to the @code{http} block. Can either
be a value that can be lowered into a string or a list of such values.
In the former case, it is inserted directly. In the latter, it is
prefixed with indentation and suffixed with a newline. Nested lists are
flattened into one line.
@lisp
(extra-content "include /etc/nginx/custom-config.conf;")
(extra-content `("include /etc/nginx/custom-config.conf;"
("include " ,%custom-config.conf ";")))
@end lisp
@end table
@end deftp

View file

@ -771,7 +771,14 @@ (define (default-nginx-config config)
"\n"
(map emit-nginx-upstream-config upstream-blocks)
(map emit-nginx-server-config server-blocks)
extra-content
(match extra-content
((? list? extra-content)
(map (lambda (line)
`(" " ,line "\n"))
extra-content))
;; XXX: For compatibility strings and gexp's are inserted
;; directly.
(_ extra-content))
"\n}\n"))))
(define %nginx-accounts