anchor.diff:          </Pass>
     ";
   
  +  modules = pkgs.buildEnv {
  +    name = "znc-modules";
  +    paths = cfg.modulePackages;
  +  };
  +
     confOptions = { ... }: {
       options = {
         modules = mkOption {
  -        type = types.listOf types.str;
  +        type = types.listOf types.string;
           default = [ "partyline" "webadmin" "adminlog" "log" ];
           example = [ "partyline" "webadmin" "adminlog" "log" ];
           description = ''
             A list of modules to include in the `znc.conf` file.
  +        '';
  +      };
  +
  +      userModules = mkOption {
  +        type = types.listOf types.string;
  +        default = [ ];
  +        example = [ "fish" "push" ];
  +        description = ''
  +          A list of user modules to include in the `znc.conf` file.
           '';
         };
   
         userName = mkOption {
           default = defaultUserName;
           example = "johntron";
  -        type = types.str;
  +        type = types.string;
           description = ''
             The user name to use when generating the `znc.conf` file.
             This is the user name used by the user logging into the ZNC web admin. 
  
positive.code:         '';
          options = confOptions; 
        };
   
        mutable = mkOption {
          default = false;
  
negative.code:       };
  
        dataDir = mkOption {
          default = "/var/lib/znc/";
          example = "/home/john/.znc/";
          type = types.path;
          description = ''
            The data directory. Used for configuration files and modules.
  