Subject: [bug#61956] [PATCH v2] services: dns: Extend dnsmasq-configuration.

From: Sergey Trofimov <[email-masked]>
Date: Fri, 10 Mar 2023 09:38:05 +0100

Andrew Tropin <[email-masked]> writes:

> [[PGP Signed Part:Undecided]]
> On 2023-03-04 09:40, Sergey Trofimov wrote:
>
> Hi Sergey!
>
> Thank you for the patch, please add information to the commit 
> message
> body.  Here is an example:
> https://git.savannah.gnu.org/cgit/guix.git/commit/?id=8390b47c04
>

I have pushed v3 with a proper description.

>>    (servers          dnsmasq-configuration-servers
>>                      (default '()))      ;list of string
>> +  (servers-file     dnsmasq-configuration-servers-file
>> +                    (default #f))       ;string
>
> I would expect it to be a file-like rather than string, so we 
> are sure
> that the configuration file is present.  WDYT?
>

Hmm, my use-case is to generate this file in dhclient's hook, so 
that dnsmasq knows the domain supplied with the DHCP 
configuration.

Here is how I do that:

1. Define the hook which updates dnsmasq.servers and sends HUP to 
the daemon
(define dhclient-enter-hooks "
make_resolv_conf() {
    touch /etc/dnsmasq.servers
    sed -i '/#dhcp/,+1d' /etc/dnsmasq.servers
    cat <<EOF >>/etc/dnsmasq.servers
#dhcp
server=/${new_domain_name}/${new_domain_name_servers}
EOF

    kill -HUP $(cat /run/dnsmasq.pid)
}
")

2. Register the file in operating-system -> services
(extra-special-file "/etc/dhclient-enter-hooks"
        (plain-file "dhclient-enter-hooks"
                    dhclient-enter-hooks))

3. Add dnsmasq option
(servers-file "/etc/dnsmasq.servers")

Do you think making `servers-file` either string or file-like 
would be a way to go?