···7272 - If [`system.stateVersion`](#opt-system.stateVersion) is >=23.05, `pkgs.nextcloud26` will be installed by default.
7373 - 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).
74747575+- 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.
7676+7577- 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.
76787779- DocBook option documentation is no longer supported, all module documentation now uses markdown.
···1897189718981898 bridgeVLANOptions = {
18991899 options = {
19001900- bridgeMDBConfig = mkOption {
19001900+ bridgeVLANConfig = mkOption {
19011901 default = {};
19021902 example = { VLAN = 20; };
19031903 type = types.addCheck (types.attrsOf unitOption) check.network.sectionBridgeVLAN;
···23842384 description = lib.mdDoc ''
23852385 Each attribute in this set specifies an option in the
23862386 `[QuickFairQueueingClass]` section of the unit. See
23872387- {manpage}`systemd.network(5)` for details.
23882388- '';
23892389- };
23902390-23912391- bridgeVLANConfig = mkOption {
23922392- default = {};
23932393- example = { VLAN = "10-20"; };
23942394- type = types.addCheck (types.attrsOf unitOption) check.network.sectionBridgeVLAN;
23952395- description = lib.mdDoc ''
23962396- Each attribute in this set specifies an option in the
23972397- `[BridgeVLAN]` section of the unit. See
23982387 {manpage}`systemd.network(5)` for details.
23992388 '';
24002389 };
+6-4
nixos/modules/virtualisation/proxmox-image.nix
···9898 qemuExtraConf = mkOption {
9999 type = with types; attrsOf (oneOf [ str int ]);
100100 default = {};
101101- example = literalExpression ''{
102102- cpu = "host";
103103- onboot = 1;
104104- }'';
101101+ example = literalExpression ''
102102+ {
103103+ cpu = "host";
104104+ onboot = 1;
105105+ }
106106+ '';
105107 description = lib.mdDoc ''
106108 Additional options appended to qemu-server.conf
107109 '';
+53-2
nixos/tests/systemd-networkd-dhcpserver.nix
···11# This test predominantly tests systemd-networkd DHCP server, by
22# setting up a DHCP server and client, and ensuring they are mutually
33# reachable via the DHCP allocated address.
44+# Two DHCP servers are set up on bridge VLANs, testing to make sure that
55+# bridge VLAN settings are correctly applied.
66+#
77+# br0 ----untagged---v
88+# +---PVID 1+VLAN 2---[bridge]---PVID 2---eth1
99+# vlan2 ---VLAN 2----^
410import ./make-test-python.nix ({pkgs, ...}: {
511 name = "systemd-networkd-dhcpserver";
612 meta = with pkgs.lib.maintainers; {
···1622 firewall.enable = false;
1723 };
1824 systemd.network = {
2525+ netdevs = {
2626+ br0 = {
2727+ enable = true;
2828+ netdevConfig = {
2929+ Name = "br0";
3030+ Kind = "bridge";
3131+ };
3232+ extraConfig = ''
3333+ [Bridge]
3434+ VLANFiltering=yes
3535+ DefaultPVID=none
3636+ '';
3737+ };
3838+ vlan2 = {
3939+ enable = true;
4040+ netdevConfig = {
4141+ Name = "vlan2";
4242+ Kind = "vlan";
4343+ };
4444+ vlanConfig.Id = 2;
4545+ };
4646+ };
1947 networks = {
2048 # systemd-networkd will load the first network unit file
2149 # that matches, ordered lexiographically by filename.
···2452 # however, hence why this network is named such.
2553 "01-eth1" = {
2654 name = "eth1";
5555+ networkConfig.Bridge = "br0";
5656+ bridgeVLANs = [
5757+ { bridgeVLANConfig = { PVID = 2; EgressUntagged = 2; }; }
5858+ ];
5959+ };
6060+ "02-br0" = {
6161+ name = "br0";
2762 networkConfig = {
2863 DHCPServer = true;
2964 Address = "10.0.0.1/24";
6565+ VLAN = ["vlan2"];
6666+ };
6767+ dhcpServerConfig = {
6868+ PoolOffset = 100;
6969+ PoolSize = 1;
7070+ };
7171+ bridgeVLANs = [
7272+ { bridgeVLANConfig = { PVID = 1; EgressUntagged = 1; }; }
7373+ { bridgeVLANConfig = { VLAN = 2; }; }
7474+ ];
7575+ };
7676+ "02-vlan2" = {
7777+ name = "vlan2";
7878+ networkConfig = {
7979+ DHCPServer = true;
8080+ Address = "10.0.2.1/24";
3081 };
3182 dhcpServerConfig = {
3283 PoolOffset = 100;
···52103 start_all()
53104 router.wait_for_unit("systemd-networkd-wait-online.service")
54105 client.wait_for_unit("systemd-networkd-wait-online.service")
5555- client.wait_until_succeeds("ping -c 5 10.0.0.1")
5656- router.wait_until_succeeds("ping -c 5 10.0.0.100")
106106+ client.wait_until_succeeds("ping -c 5 10.0.2.1")
107107+ router.wait_until_succeeds("ping -c 5 10.0.2.100")
57108 '';
58109})
···7373 cd $out${finalAttrs.passthru.libdir}
74747575 for f in librdimon.a libc.a libg.a; do
7676- cp "$f" "''${f%%\.a}_nano.a"
7676+ # Some libraries are only available for specific architectures.
7777+ # For example, librdimon.a is only available on ARM.
7878+ [ -f "$f" ] && cp "$f" "''${f%%\.a}_nano.a"
7779 done
7880 )
7979- '';
8181+ '' + ''[ "$(find $out -type f | wc -l)" -gt 0 ] || (echo '$out is empty' 1>&2 && exit 1)'';
80828183 passthru = {
8284 incdir = "/${stdenv.targetPlatform.config}/include";