anchor.diff:        after = [ "network.service" ];
         serviceConfig = {
           User = cfg.user;
  +        Group = cfg.group;
           Restart = "always";
           ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
           ExecStop   = "${pkgs.coreutils}/bin/kill -INT $MAINPID";
  
positive.code:   };
  
    # Keep znc.conf in nix store, then symlink or copy into `dataDir`, depending on `mutable`.
    mkZncConf = confOpts: ''
      // Also check http://en.znc.in/wiki/Configuration
      
      AnonIPLimit = 10
      ConnectDelay = 5
      # Add `LoadModule = x` for each module...
      ${concatMapStrings (n: "LoadModule = ${n}\n") confOpts.modules}
      MaxBufferSize = 500
      ProtectWebSessions = true
      SSLCertFile = ${cfg.dataDir}/znc.pem
      ServerThrottle = 30
      Skin = dark-clouds
      StatusPrefix = *
      Version = 1.2
  
      <Listener listener0>
              AllowIRC = true
              AllowWeb = true
              IPv4 = true
              IPv6 = false
              Port = ${if confOpts.useSSL then "+" else ""}${toString confOpts.port}
              SSL = ${if confOpts.useSSL then "true" else "false"}
      </Listener>
      
      <User ${confOpts.userName}>
              Admin = true
              Allow = *
              AltNick = ${confOpts.nick}_
              AppendTimestamp = false
              AutoClearChanBuffer = false
              Buffer = 150
              ChanModes = +stn
              DenyLoadMod = false
              DenySetBindHost = false
              Ident = ident
              JoinTries = 10
              MaxJoins = 0
              MaxNetworks = 1
              MultiClients = true
              Nick = ${confOpts.nick}
              PrependTimestamp = true
              QuitMsg = Quit
              RealName = ${confOpts.nick}
              TimestampFormat = [%H:%M:%S]
              ${concatMapStrings (n: "LoadModule = ${n}\n") confOpts.userModules}
              
              ${confOpts.passBlock}
      </User>
      ${confOpts.extraZncConf}
    '';
  
negative.code:           example = "johntron";
            type = types.string;
            description = ''
              The user name used to log in to the ZNC web admin interface.
            '';
          };
  
          networks = mkOption {
            default = { };
            type = types.loaOf types.optionSet;
            description = ''
              IRC networks to connect the user to.
            '';
            options = [ networkOpts ];
            example = {
              "freenode" = {
                server = "chat.freenode.net";
                port = 6697;
                ssl = true;
                modules = [ "simple_away" ];
              };
            };
          };
  
          nick = mkOption {
  