anchor.diff:          name specifying the name of the bond's network interface
         '';
   
  -      type = types.attrsOf types.optionSet;
  -
  -      options = {
  -
  -        interfaces = mkOption {
  -          example = [ "enp4s0f0" "enp4s0f1" "wlan0" ];
  -          type = types.listOf types.str;
  -          description = "The interfaces to bond together";
  -        };
  -
  -        lacp_rate = mkOption {
  -          default = null;
  -          example = "fast";
  -          type = types.nullOr types.str;
  -          description = ''
  -            Option specifying the rate in which we'll ask our link partner
  -            to transmit LACPDU packets in 802.3ad mode.
  -          '';
  -        };
  -
  -        miimon = mkOption {
  -          default = null;
  -          example = 100;
  -          type = types.nullOr types.int;
  -          description = ''
  -            Miimon is the number of millisecond in between each round of polling
  -            by the device driver for failed links. By default polling is not
  -            enabled and the driver is trusted to properly detect and handle
  -            failure scenarios.
  -          '';
  -        };
  -
  -        mode = mkOption {
  -          default = null;
  -          example = "active-backup";
  -          type = types.nullOr types.str;
  -          description = ''
  -            The mode which the bond will be running. The default mode for
  -            the bonding driver is balance-rr, optimizing for throughput.
  -            More information about valid modes can be found at
  -            https://www.kernel.org/doc/Documentation/networking/bonding.txt
  -          '';
  -        };
  -
  -        xmit_hash_policy = mkOption {
  -          default = null;
  -          example = "layer2+3";
  -          type = types.nullOr types.str;
  -          description = ''
  -            Selects the transmit hash policy to use for slave selection in
  -            balance-xor, 802.3ad, and tlb modes.
  -          '';
  -        };
  -
  -      };
  +      type = with types; attrsOf (submodule {
  +
  +        options = {
  +
  +          interfaces = mkOption {
  +            example = [ "enp4s0f0" "enp4s0f1" "wlan0" ];
  +            type = types.listOf types.str;
  +            description = "The interfaces to bond together";
  +          };
  +
  +          lacp_rate = mkOption {
  +            default = null;
  +            example = "fast";
  +            type = types.nullOr types.str;
  +            description = ''
  +              Option specifying the rate in which we'll ask our link partner
  +              to transmit LACPDU packets in 802.3ad mode.
  +            '';
  +          };
  +
  +          miimon = mkOption {
  +            default = null;
  +            example = 100;
  +            type = types.nullOr types.int;
  +            description = ''
  +              Miimon is the number of millisecond in between each round of polling
  +              by the device driver for failed links. By default polling is not
  +              enabled and the driver is trusted to properly detect and handle
  +              failure scenarios.
  +            '';
  +          };
  +
  +          mode = mkOption {
  +            default = null;
  +            example = "active-backup";
  +            type = types.nullOr types.str;
  +            description = ''
  +              The mode which the bond will be running. The default mode for
  +              the bonding driver is balance-rr, optimizing for throughput.
  +              More information about valid modes can be found at
  +              https://www.kernel.org/doc/Documentation/networking/bonding.txt
  +            '';
  +          };
  +
  +          xmit_hash_policy = mkOption {
  +            default = null;
  +            example = "layer2+3";
  +            type = types.nullOr types.str;
  +            description = ''
  +              Selects the transmit hash policy to use for slave selection in
  +              balance-xor, 802.3ad, and tlb modes.
  +            '';
  +          };
  +
  +        };
  +
  +      });
       };
   
       networking.macvlans = mkOption {
  -      type = types.attrsOf types.optionSet;
         default = { };
         example = literalExample {
           wan = {
  
positive.code:           interface.
          '';
  
        type = types.attrsOf types.optionSet;
  
        options = {
  
          interfaces = mkOption {
            example = [ "eth0" "eth1" ];
            type = types.listOf types.str;
            description =
              "The physical network interfaces connected by the vSwitch.";
          };
  
          controllers = mkOption {
            type = types.listOf types.str;
            default = [];
            example = [ "ptcp:6653:[::1]" ];
            description = ''
              Specify the controller targets. For the allowed options see <literal>man 8 ovs-vsctl</literal>.
            '';
          };
  
          openFlowRules = mkOption {
            type = types.lines;
            default = "";
            example = ''
              actions=normal
            '';
            description = ''
              OpenFlow rules to insert into the Open vSwitch. All <literal>openFlowRules</literal> are
              loaded with <literal>ovs-ofctl</literal> within one atomic operation.
            '';
          };
  
          extraOvsctlCmds = mkOption {
            type = types.lines;
            default = "";
            example = ''
              set-fail-mode <switch_name> secure
              set Bridge <switch_name> stp_enable=true
            '';
            description = ''
              Commands to manipulate the Open vSwitch database. Every line executed with <literal>ovs-vsctl</literal>.
              All commands are bundled together with the operations for adding the interfaces
              into one atomic operation.
            '';
          };
  
        };
  
      };
  
  
negative.code:           { address = "10.0.0.1"; prefixLength = 16; }
            { address = "192.168.1.1"; prefixLength = 24; }
          ];
          type = with types; listOf (submodule (addrOpts 4));
          description = ''
            List of IPv4 addresses that will be statically assigned to the interface.
          '';
  