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" <>)