From da3e71f472c2335f56c3d07758715a514fdb3a9d Mon Sep 17 00:00:00 2001 From: Richard Sent Date: Thu, 20 Jun 2024 12:42:03 -0400 Subject: [PATCH] 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 --- doc/guix.texi | 13 +++++++++++-- gnu/services/web.scm | 9 ++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index fd19245539..feecd2aa1c 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -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 diff --git a/gnu/services/web.scm b/gnu/services/web.scm index 406117c457..ee3499e5cd 100644 --- a/gnu/services/web.scm +++ b/gnu/services/web.scm @@ -771,7 +771,14 @@ of index files." "\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