···72 - If [`system.stateVersion`](#opt-system.stateVersion) is >=23.05, `pkgs.nextcloud26` will be installed by default.
73 - Please note that an upgrade from v25 (or older) to v27 directly is not possible. Please upgrade to `nextcloud26` (or earlier) first. Nextcloud prohibits skipping major versions while upgrading. You can upgrade by declaring [`services.nextcloud.package = pkgs.nextcloud26;`](options.html#opt-services.nextcloud.package).
740075- A new option was added to the virtualisation module that enables specifying explicitly named network interfaces in QEMU VMs. The existing `virtualisation.vlans` is still supported for cases where the name of the network interface is irrelevant.
7677- DocBook option documentation is no longer supported, all module documentation now uses markdown.
···72 - If [`system.stateVersion`](#opt-system.stateVersion) is >=23.05, `pkgs.nextcloud26` will be installed by default.
73 - Please note that an upgrade from v25 (or older) to v27 directly is not possible. Please upgrade to `nextcloud26` (or earlier) first. Nextcloud prohibits skipping major versions while upgrading. You can upgrade by declaring [`services.nextcloud.package = pkgs.nextcloud26;`](options.html#opt-services.nextcloud.package).
7475+- New options were added to `services.searx` for better SearXNG support, including options for the built-in rate limiter and bot protection and automatically configuring a local redis server.
76+77- A new option was added to the virtualisation module that enables specifying explicitly named network interfaces in QEMU VMs. The existing `virtualisation.vlans` is still supported for cases where the name of the network interface is irrelevant.
7879- DocBook option documentation is no longer supported, all module documentation now uses markdown.
···48 extraConfig = mkOption {
49 default = { };
50 type = types.attrs;
51- example = literalExpression ''{
52- reverseProxy = true;
53- defaults = {
54- name = "Your Network";
55- host = "localhost";
56- port = 6697;
57- };
58- }'';
0059 description = lib.mdDoc ''
60 The Lounge's {file}`config.js` contents as attribute set (will be
61 converted to JSON to generate the configuration file).
···48 extraConfig = mkOption {
49 default = { };
50 type = types.attrs;
51+ example = literalExpression ''
52+ {
53+ reverseProxy = true;
54+ defaults = {
55+ name = "Your Network";
56+ host = "localhost";
57+ port = 6697;
58+ };
59+ }
60+ '';
61 description = lib.mdDoc ''
62 The Lounge's {file}`config.js` contents as attribute set (will be
63 converted to JSON to generate the configuration file).
+6-5
nixos/modules/services/web-servers/ttyd.nix
···78 clientOptions = mkOption {
79 type = types.attrsOf types.str;
80 default = {};
81- example = literalExpression ''{
82- fontSize = "16";
83- fontFamily = "Fira Code";
84-85- }'';
086 description = lib.mdDoc ''
87 Attribute set of client options for xtermjs.
88 <https://xtermjs.org/docs/api/terminal/interfaces/iterminaloptions/>
···78 clientOptions = mkOption {
79 type = types.attrsOf types.str;
80 default = {};
81+ example = literalExpression ''
82+ {
83+ fontSize = "16";
84+ fontFamily = "Fira Code";
85+ }
86+ '';
87 description = lib.mdDoc ''
88 Attribute set of client options for xtermjs.
89 <https://xtermjs.org/docs/api/terminal/interfaces/iterminaloptions/>
+1-12
nixos/modules/system/boot/networkd.nix
···18971898 bridgeVLANOptions = {
1899 options = {
1900- bridgeMDBConfig = mkOption {
1901 default = {};
1902 example = { VLAN = 20; };
1903 type = types.addCheck (types.attrsOf unitOption) check.network.sectionBridgeVLAN;
···2384 description = lib.mdDoc ''
2385 Each attribute in this set specifies an option in the
2386 `[QuickFairQueueingClass]` section of the unit. See
2387- {manpage}`systemd.network(5)` for details.
2388- '';
2389- };
2390-2391- bridgeVLANConfig = mkOption {
2392- default = {};
2393- example = { VLAN = "10-20"; };
2394- type = types.addCheck (types.attrsOf unitOption) check.network.sectionBridgeVLAN;
2395- description = lib.mdDoc ''
2396- Each attribute in this set specifies an option in the
2397- `[BridgeVLAN]` section of the unit. See
2398 {manpage}`systemd.network(5)` for details.
2399 '';
2400 };
···18971898 bridgeVLANOptions = {
1899 options = {
1900+ bridgeVLANConfig = mkOption {
1901 default = {};
1902 example = { VLAN = 20; };
1903 type = types.addCheck (types.attrsOf unitOption) check.network.sectionBridgeVLAN;
···2384 description = lib.mdDoc ''
2385 Each attribute in this set specifies an option in the
2386 `[QuickFairQueueingClass]` section of the unit. See
000000000002387 {manpage}`systemd.network(5)` for details.
2388 '';
2389 };
+6-4
nixos/modules/virtualisation/proxmox-image.nix
···98 qemuExtraConf = mkOption {
99 type = with types; attrsOf (oneOf [ str int ]);
100 default = {};
101- example = literalExpression ''{
102- cpu = "host";
103- onboot = 1;
104- }'';
00105 description = lib.mdDoc ''
106 Additional options appended to qemu-server.conf
107 '';
···98 qemuExtraConf = mkOption {
99 type = with types; attrsOf (oneOf [ str int ]);
100 default = {};
101+ example = literalExpression ''
102+ {
103+ cpu = "host";
104+ onboot = 1;
105+ }
106+ '';
107 description = lib.mdDoc ''
108 Additional options appended to qemu-server.conf
109 '';
+53-2
nixos/tests/systemd-networkd-dhcpserver.nix
···1# This test predominantly tests systemd-networkd DHCP server, by
2# setting up a DHCP server and client, and ensuring they are mutually
3# reachable via the DHCP allocated address.
0000004import ./make-test-python.nix ({pkgs, ...}: {
5 name = "systemd-networkd-dhcpserver";
6 meta = with pkgs.lib.maintainers; {
···16 firewall.enable = false;
17 };
18 systemd.network = {
000000000000000000000019 networks = {
20 # systemd-networkd will load the first network unit file
21 # that matches, ordered lexiographically by filename.
···24 # however, hence why this network is named such.
25 "01-eth1" = {
26 name = "eth1";
000000027 networkConfig = {
28 DHCPServer = true;
29 Address = "10.0.0.1/24";
000000000000000030 };
31 dhcpServerConfig = {
32 PoolOffset = 100;
···52 start_all()
53 router.wait_for_unit("systemd-networkd-wait-online.service")
54 client.wait_for_unit("systemd-networkd-wait-online.service")
55- client.wait_until_succeeds("ping -c 5 10.0.0.1")
56- router.wait_until_succeeds("ping -c 5 10.0.0.100")
57 '';
58})
···1# This test predominantly tests systemd-networkd DHCP server, by
2# setting up a DHCP server and client, and ensuring they are mutually
3# reachable via the DHCP allocated address.
4+# Two DHCP servers are set up on bridge VLANs, testing to make sure that
5+# bridge VLAN settings are correctly applied.
6+#
7+# br0 ----untagged---v
8+# +---PVID 1+VLAN 2---[bridge]---PVID 2---eth1
9+# vlan2 ---VLAN 2----^
10import ./make-test-python.nix ({pkgs, ...}: {
11 name = "systemd-networkd-dhcpserver";
12 meta = with pkgs.lib.maintainers; {
···22 firewall.enable = false;
23 };
24 systemd.network = {
25+ netdevs = {
26+ br0 = {
27+ enable = true;
28+ netdevConfig = {
29+ Name = "br0";
30+ Kind = "bridge";
31+ };
32+ extraConfig = ''
33+ [Bridge]
34+ VLANFiltering=yes
35+ DefaultPVID=none
36+ '';
37+ };
38+ vlan2 = {
39+ enable = true;
40+ netdevConfig = {
41+ Name = "vlan2";
42+ Kind = "vlan";
43+ };
44+ vlanConfig.Id = 2;
45+ };
46+ };
47 networks = {
48 # systemd-networkd will load the first network unit file
49 # that matches, ordered lexiographically by filename.
···52 # however, hence why this network is named such.
53 "01-eth1" = {
54 name = "eth1";
55+ networkConfig.Bridge = "br0";
56+ bridgeVLANs = [
57+ { bridgeVLANConfig = { PVID = 2; EgressUntagged = 2; }; }
58+ ];
59+ };
60+ "02-br0" = {
61+ name = "br0";
62 networkConfig = {
63 DHCPServer = true;
64 Address = "10.0.0.1/24";
65+ VLAN = ["vlan2"];
66+ };
67+ dhcpServerConfig = {
68+ PoolOffset = 100;
69+ PoolSize = 1;
70+ };
71+ bridgeVLANs = [
72+ { bridgeVLANConfig = { PVID = 1; EgressUntagged = 1; }; }
73+ { bridgeVLANConfig = { VLAN = 2; }; }
74+ ];
75+ };
76+ "02-vlan2" = {
77+ name = "vlan2";
78+ networkConfig = {
79+ DHCPServer = true;
80+ Address = "10.0.2.1/24";
81 };
82 dhcpServerConfig = {
83 PoolOffset = 100;
···103 start_all()
104 router.wait_for_unit("systemd-networkd-wait-online.service")
105 client.wait_for_unit("systemd-networkd-wait-online.service")
106+ client.wait_until_succeeds("ping -c 5 10.0.2.1")
107+ router.wait_until_succeeds("ping -c 5 10.0.2.100")
108 '';
109})
···73 cd $out${finalAttrs.passthru.libdir}
7475 for f in librdimon.a libc.a libg.a; do
76- cp "$f" "''${f%%\.a}_nano.a"
0077 done
78 )
79- '';
8081 passthru = {
82 incdir = "/${stdenv.targetPlatform.config}/include";
···73 cd $out${finalAttrs.passthru.libdir}
7475 for f in librdimon.a libc.a libg.a; do
76+ # Some libraries are only available for specific architectures.
77+ # For example, librdimon.a is only available on ARM.
78+ [ -f "$f" ] && cp "$f" "''${f%%\.a}_nano.a"
79 done
80 )
81+ '' + ''[ "$(find $out -type f | wc -l)" -gt 0 ] || (echo '$out is empty' 1>&2 && exit 1)'';
8283 passthru = {
84 incdir = "/${stdenv.targetPlatform.config}/include";