services.flannel: add an extraNetworkConfig configuration, add missing kernel module (#365317)

Changed files
+20 -7
nixos
modules
services
networking
+20 -7
nixos/modules/services/networking/flannel.nix
···
let
cfg = config.services.flannel;
-
networkConfig = lib.filterAttrs (n: v: v != null) {
-
Network = cfg.network;
-
SubnetLen = cfg.subnetLen;
-
SubnetMin = cfg.subnetMin;
-
SubnetMax = cfg.subnetMax;
-
Backend = cfg.backend;
-
};
+
networkConfig =
+
(lib.filterAttrs (n: v: v != null) {
+
Network = cfg.network;
+
SubnetLen = cfg.subnetLen;
+
SubnetMin = cfg.subnetMin;
+
SubnetMax = cfg.subnetMax;
+
Backend = cfg.backend;
+
})
+
// cfg.extraNetworkConfig;
in
{
options.services.flannel = {
···
Type = "vxlan";
};
};
+
+
extraNetworkConfig = lib.mkOption {
+
description = "Extra configuration to be added to the net-conf.json/etcd-backed network configuration.";
+
type = (pkgs.formats.json { }).type;
+
default = { };
+
example = {
+
EnableIPv6 = true;
+
};
+
};
};
config = lib.mkIf cfg.enable {
···
RuntimeDirectory = "flannel";
};
};
+
+
boot.kernelModules = [ "br_netfilter" ];
services.etcd.enable = lib.mkDefault (
cfg.storageBackend == "etcd" && cfg.etcd.endpoints == [ "http://127.0.0.1:2379" ]