Merge #75803: kresd service: unify listen declarations

Changed files
+25 -8
nixos
doc
manual
release-notes
modules
services
networking
+8
nixos/doc/manual/release-notes/rl-2003.xml
···
</listitem>
<listitem>
<para>
+
The <literal>kresd</literal> services deprecates the <literal>interfaces</literal> option
+
in favor of the <literal>listenPlain</literal> option which requires full
+
<link xlink:href="https://www.freedesktop.org/software/systemd/man/systemd.socket.html#ListenStream=">systemd.socket compatible</link>
+
declaration which always include a port.
+
</para>
+
</listitem>
+
<listitem>
+
<para>
Virtual console options have been reorganized and can be found under
a single top-level attribute: <literal>console</literal>.
The full set of changes is as follows:
+17 -8
nixos/modules/services/networking/kresd.nix
···
{
meta.maintainers = [ maintainers.vcunat /* upstream developer */ ];
+
imports = [
+
(mkChangedOptionModule [ "services" "kresd" "interfaces" ] [ "services" "kresd" "listenPlain" ]
+
(config:
+
let value = getAttrFromPath [ "services" "kresd" "interfaces" ] config;
+
in map
+
(iface: if elem ":" (stringToCharacters iface) then "[${iface}]:53" else "${iface}:53") # Syntax depends on being IPv6 or IPv4.
+
value
+
)
+
)
+
];
+
###### interface
options.services.kresd = {
enable = mkOption {
···
Directory for caches. They are intended to survive reboots.
'';
};
-
interfaces = mkOption {
+
listenPlain = mkOption {
type = with types; listOf str;
-
default = [ "::1" "127.0.0.1" ];
+
default = [ "[::1]:53" "127.0.0.1:53" ];
description = ''
-
What addresses the server should listen on. (UDP+TCP 53)
+
What addresses and ports the server should listen on.
+
For detailed syntax see ListenStream in man systemd.socket.
'';
};
listenTLS = mkOption {
···
default = [];
example = [ "198.51.100.1:853" "[2001:db8::1]:853" "853" ];
description = ''
-
Addresses on which kresd should provide DNS over TLS (see RFC 7858).
+
Addresses and ports on which kresd should provide DNS over TLS (see RFC 7858).
For detailed syntax see ListenStream in man systemd.socket.
'';
};
···
systemd.sockets.kresd = rec {
wantedBy = [ "sockets.target" ];
before = wantedBy;
-
listenStreams = map
-
# Syntax depends on being IPv6 or IPv4.
-
(iface: if elem ":" (stringToCharacters iface) then "[${iface}]:53" else "${iface}:53")
-
cfg.interfaces;
+
listenStreams = cfg.listenPlain;
socketConfig = {
ListenDatagram = listenStreams;
FreeBind = true;