guix_mirror_bot pushed a commit to branch master
in repository guix.

commit 7d9b4b7bb7a9244c09dadac79bcb312c24a201af
Author: Maxim Cournoyer <[email protected]>
AuthorDate: Sun May 24 14:30:56 2026 +0900

    service: dnsmasq: Add 'locals' configuration option.
    
    * gnu/services/dns.scm (<dnsmasq-configuration>)
    [locals]: New field.
    (dnsmasq-shepherd-service): Use it.
    * doc/guix.texi (DNS Services): Document it.
    
    Change-Id: I1c2bc86c1636aa82451d1a38959380c3791fd8d4
---
 doc/guix.texi        | 6 ++++++
 gnu/services/dns.scm | 7 ++++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 7a8ec55b95..63cd99ac09 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -38221,6 +38221,12 @@ When false, all reverse lookups for private IP ranges 
are answered with
 When true, dnsmasq queries the servers in the same order as they appear
 in @var{servers}.
 
+@item @code{locals} (default: @code{'()})
+Specify domain name @emph{patterns} which should be treated as local,
+that is, for which there should be no delegation to upstream servers.
+Provided pattern values should be of the form
+@code{'("/vpn.example.com/")}.
+
 @item @code{servers} (default: @code{'()})
 Specify IP address of upstream servers directly.
 
diff --git a/gnu/services/dns.scm b/gnu/services/dns.scm
index d4f771b9b6..52ee99789d 100644
--- a/gnu/services/dns.scm
+++ b/gnu/services/dns.scm
@@ -70,6 +70,7 @@
             dnsmasq-configuration-no-resolv?
             dnsmasq-configuration-forward-private-reverse-lookup?
             dnsmasq-configuration-query-servers-in-order?
+            dnsmasq-configuration-locals
             dnsmasq-configuration-servers
             dnsmasq-configuration-servers-file
             dnsmasq-configuration-addresses
@@ -809,6 +810,8 @@ cache.size = 100 * MB
   (query-servers-in-order?
                     dnsmasq-configuration-query-servers-in-order?
                     (default #f))       ;boolean
+  (locals           dnsmasq-configuration-locals
+                    (default '()))
   (servers          dnsmasq-configuration-servers
                     (default '()))      ;list of string
   (servers-file     dnsmasq-configuration-servers-file
@@ -868,7 +871,7 @@ cache.size = 100 * MB
      port local-service? listen-addresses ipv4? ipv6?
      resolv-file no-resolv?
      forward-private-reverse-lookup? query-servers-in-order?
-     servers addresses servers-file
+     locals servers addresses servers-file
      cache-size negative-cache?
      cpe-id
      tftp-enable? tftp-no-fail?
@@ -916,6 +919,8 @@ cache.size = 100 * MB
                 #$@(if servers-file
                        (list #~(string-append "--servers-file=" 
#$servers-file))
                        '())
+                #$@(map (cut format #f "--local=~a" <>)
+                        locals)
                 #$@(map (cut format #f "--server=~a" <>)
                         servers)
                 #$@(map (cut format #f "--address=~a" <>)

Reply via email to