anchor.diff:  assert is2x -> !isPy3;
   
   stdenv.mkDerivation rec {
  -  name = "pygobject-${source.version}";
  +  name = "pygobject-${source.version}${optionalString is2x "-${source.date}"}";
   
  -  src = fetchurl {
  -    url = "mirror://gnome/sources/pygobject/${channel}/${name}.tar.xz";
  -    hashOutput = false;
  -    inherit (source) sha256;
  -  };
  +  src =
  +    if is2x then
  +      fetchFromGitHub {
  +        version = source.fetchzipversion;
  +        owner = "GNOME";
  +        repo = "pygobject";
  +        inherit (source) rev sha256;
  +      }
  +    else
  +      fetchurl {
  +        url = "mirror://gnome/sources/pygobject/${channel}/${name}.tar.xz";
  +        hashOutput = false;
  +        inherit (source) sha256;
  +      };
  +
  +  nativeBuildInputs = optionals is2x [
  +    autoreconfHook
  +  ];
   
     buildInputs = [
  +    cairo
       glib
       gobject-introspection
       libffi
  +    pycairo
       python
  -  ] ++ optionals (!is2x) [
  -    cairo
  -    pycairo
     ];
   
     configureFlags = optionals is2x [
  
positive.code: 
    sources = {
      "2.28" = {
        version = "2.28.7";
        sha256 = "bb9d25a3442ca7511385a7c01b057492095c263784ef31231ffe589d83a96a5a";
      };
      "3.28" = {
        version = "3.28.2";
  
negative.code: { stdenv
  , autoreconfHook
  , fetchFromGitHub
  , fetchurl
  , isPy3
  , lib
  