anchor.diff:          '';
         };
   
  +      plugins = mkOption {
  +        type = types.attrsOf types.path;
  +        default = {};
  +        description = ''
  +          Attribute set of additional plugins that will be symlinked to the
  +          <filename>plugin</filename> subdirectory.
  +
  +          Please note that you still need to add the plugins to the config
  +          file (or with <literal>!load</literal>) using their attribute name.
  +        '';
  +        example = literalExample ''
  +          let
  +            plugins = pkgs.fetchzip {
  +              url = "https://github.com/ProgVal/Supybot-plugins/archive/57c2450c.zip";
  +              sha256 = "077snf84ibnva3sbpzdfpfma6hcdw7dflwnhg6pw7mgnf0nd84qd";
  +            };
  +          in
  +          {
  +            Wikipedia = "''${plugins}/Wikipedia";
  +            Decide = ./supy-decide;
  +          }
  +        '';
  +      };
  +
  +      extraPackages = mkOption {
  +        default = p: [];
  +        description = ''
  +          Extra Python packages available to supybot plugins. The
  +          value must be a function which receives the attrset defined
  +          in <varname>python3Packages</varname> as the sole argument.
  +        '';
  +        example = literalExample ''p: [ p.lxml p.requests ]'';
  +      };
  +
       };
   
     };
   
     config = mkIf cfg.enable {
   
  -    environment.systemPackages = [ pkgs.pythonPackages.limnoria ];
  +    environment.systemPackages = [ pkgs.python3Packages.limnoria ];
   
       users.users.supybot = {
         uid = config.ids.uids.supybot;
  
positive.code:       "d '${cfg.stateDir}/tmp'          0750 supybot supybot - -"
        "d '${cfg.stateDir}/web'          0750 supybot supybot - -"
        "L '${cfg.stateDir}/supybot.cfg'  -    -       -       - ${cfg.configFile}"
      ];
  
    };
  }
  
negative.code: 
      systemd.services.supybot = {
        description = "Supybot, an IRC bot";
        documentation = [ "https://limnoria.readthedocs.io/" ];
        after = [ "network.target" ];
        wantedBy = [ "multi-user.target" ];
        preStart = ''
          # This needs to be created afresh every time
          rm -f '${cfg.stateDir}/supybot.cfg.bak'
        '';
  
        serviceConfig = {
          ExecStart = "${pyEnv}/bin/supybot ${cfg.stateDir}/supybot.cfg";
          PIDFile = "/run/supybot.pid";
          User = "supybot";
          Group = "supybot";
  