smartd: Add options for each device being monitored
nat: enable NAT for multiple networks
Respect partOf etc. for socket and target units
Whitespace
 - fix indention, clarify parameter descriptions, and use 'exec' instead of 'script' in the hostapd job
Change the default value of programs.ssh.forwardX11 to false.

Forwarding X11 to untrusted servers is extremely insecure; see for example
http://www.hackinglinuxexposed.com/articles/20040705.html
Use optionalAttrs
Use config.system.build.systemd in the toplevel derivation
Add an option for BindsTo dependencies
firewall.nix: Don't spam the log
Add support for postStop scripts
Split the monolithic network-interface service into multiple units

For each statically configured interface, we now create a unit
‘<interface>-cfg.service’ which gets started as soon as the network
device comes up.  Similarly, each bridge defined in
‘networking.bridges’ and virtual interface in ‘networking.interfaces’
is created by a service ‘<interface>.service’.

So if we have

  networking.bridges.br0.interfaces = [ "eth0" "eth1" ];
  networking.interfaces =
    [ { name = "br0";
        ipAddress = "192.168.1.1";
      }
    ];

then there will be a unit ‘br0.service’ that depends on
‘sys-subsystem-net-devices-eth0.device’ and
‘sys-subsystem-net-devices-eth1.device’, and a unit ‘br0-cfg.service’
that depends on ‘sys-subsystem-net-devices-br0.device’.
Remove "wants" dependencies on <interface>.service

Instead it's enough to depend on
sys-subsystem-net-devices-<interface>.device, which in turn has a
"wants" dependency on the service (if any) that creates the interface.
Fix accidental commit
Don't flush addresses unless necessary

Flushing is bad if the Nix store is on a remote filesystem accessed
over that interface.

http://hydra.nixos.org/build/3184162

Also added a interface option ‘prefixLength’ as a better alternative
to ‘subnetMask’.
Add a ‘restart’ alias
Move non-interface specific initialisation to ‘network-setup.service’

The unit ‘network-interface.service’ has been replaced by
‘network-interfaces.target’.
Allow a unit to declare "triggers" that force a restart

The triggers are just arbitrary strings that are included in the unit
under X-Restart-Triggers.  The idea is that if they change between
reconfigurations, switch-to-configuration will restart the unit
because its store path changed.  This is mostly useful for services
that implicitly depend on generated files in /etc.  Thus you can say

  restartTriggers = [ confFile ];

where ‘confFile’ is the derivation that generated the /etc file in
question.
dhcpcd: Don't depend on network-interfaces.target

Dhcpcd automatically detects new interfaces, so we can start it right
away.
Ensure that systemd-modules-load is restarted when boot.kernelModules changes