Subject: [bug#30702] [PATCH] services: nginx: Support extra content in the http block.

From: Christopher Baines <[email-masked]>
Date: Mon, 11 Jun 2018 19:09:39 +0100

Ludovic Courtès <[email-masked]> writes:

> Hello,
>
> Christopher Baines <[email-masked]> skribis:
>
>> This helpful when adding content to the nginx configuration file, which isn't
>> supported by the record type used for the configuration.  For example, like
>> adding proxy_cache_path configuration.
>>
>> * gnu/packages/web.scm (<nginx-configuration>): Add new extra-content field.
>>   (nginx-configuration-extra-content): New field accessor.
>>   (default-nginx-config): Add support for the extra-content field.
>> * doc/guix.texi (NGINX): Document the new extra-content field.
>
> [...]
>
>> +@item @code{extra-content} (default: @code{""})
>> +Extra content for the @code{http} block.  Should be string or a string
>> +valued G-expression.
>
> [...]
>
>>     (apply mixed-text-file "nginx.conf"
>>            (flatten
>>             "user nginx nginx;\n"
>> @@ -542,7 +546,8 @@ of index files."
>>             "\n"
>>             (map emit-nginx-upstream-config upstream-blocks)
>>             (map emit-nginx-server-config server-blocks)
>> -           "}\n"
>> +           extra-content
>> +           "\n}\n"
>>             "events {}\n"))))
>
> That doesn’t work if ‘extra-content’ is something like:
>
>   #~(string-append "foo" bar)
>
> does it?
>
> My understanding of the doc above was that it intends to allow this.
> But maybe it doesn’t matter after all?

So... I've finally got back around to looking at this, and as far as I
can see, it does work. extra-content is passed as one of the arguments
to mixed-text-file, which accepts G-exp things.