anchor.diff:    cfg  = config.services.supybot;
     isStateDirHome = hasPrefix "/home/" cfg.stateDir;
     isStateDirVar = cfg.stateDir == "/var/lib/supybot";
  +  pyEnv = pkgs.python3.withPackages (p: [ p.limnoria ] ++ (cfg.extraPackages p));
   in
   {
     options = {
  
positive.code:     services.supybot = {
  
        enable = mkOption {
          default = false;
          description = "Enable Supybot, an IRC bot";
        };
  
        stateDir = mkOption {
  
negative.code:         '';
        };
  
        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.python3Packages.limnoria ];
  
      users.users.supybot = {
        uid = config.ids.uids.supybot;
  