anchor.diff:      owner = "quantumlib";
       repo = "cirq";
       rev = "v${version}";
  -    sha256 = "0lhr2dka7vpz9xd6akxphrcv2b3ni2cgjywpc1r7qpqa5mrq1q7f";
  +    sha256 = "01nnv7r595sp60wvp7750lfdjwdsi4q0r4lmaj6li09zsdw0r4b3";
     };
   
  -  # Cirq 0.6 requires networkx==2.3 only for optional qiskit dependency/test, disable this to avoid networkx version conflicts. https://github.com/quantumlib/Cirq/issues/2368
  +  patches = [
  +    (fetchpatch {
  +      # Fixes serialization issues on certain versions of protobuf & numpy.
  +      name = "cirq-pr-2986-protobuf-bools.patch";
  +      url = "https://github.com/quantumlib/Cirq/commit/78ddfb574c0f3936f713613bf4ba102163efb7b3.patch";
  +      sha256 = "0hmad9ndsqf5ci7shvd924d2rv4k9pzx2r2cl1bm5w91arzz9m18";
  +    })
  +  ];
  +
     # Cirq locks protobuf==3.8.0, but tested working with default pythonPackages.protobuf (3.7). This avoids overrides/pythonPackages.protobuf conflicts
     postPatch = ''
  -    substituteInPlace requirements.txt --replace "networkx==2.3" "networkx" \
  -      --replace "protobuf==3.8.0" "protobuf"
  -
  -    # Fix sympy 1.5 test failures. Should be fixed in v0.7
  -    substituteInPlace cirq/optimizers/eject_phased_paulis_test.py --replace "phase_exponent=0.125 + x / 8" "phase_exponent=0.125 + x * 0.125"
  -    substituteInPlace cirq/contrib/quirk/cells/parse_test.py --replace "parse_formula('5t') == 5 * t" "parse_formula('5t') == 5.0 * t"
  -
  -    # Fix pandas >= 1.0 error, #2886
  -    substituteInPlace cirq/experiments/t1_decay_experiment.py --replace "del tab.columns.name" 'tab.rename_axis(None, axis="columns", inplace=True)'
  +    substituteInPlace requirements.txt \
  +      --replace "networkx~=2.4" "networkx" \
  +      --replace "protobuf==3.8.0" "protobuf" \
  +      --replace "freezegun~=0.3.15" "freezegun"
     '';
   
     propagatedBuildInputs = [
  -    google_api_python_client
  +    freezegun
  +    google_api_core
       numpy
       matplotlib
       networkx
  
positive.code: 
  buildPythonPackage rec {
    pname = "cirq";
    version = "0.6.1";
  
    disabled = pythonOlder "3.5";
  
  
negative.code:   dontUseSetuptoolsCheck = true;
    checkInputs = [
      pytestCheckHook
      pytest-asyncio
      pytest-benchmark
      ply
      pydot
      pyyaml
      pygraphviz
    ];
  
    pytestFlagsArray = [
      "--ignore=dev_tools"  # Only needed when developing new code, which is out-of-scope
    ];
    disabledTests = [
      "test_serialize_sympy_constants"  # fails due to small error in pi (~10e-7)
      "test_convert_to_ion_gates" # fails due to rounding error, 0.75 != 0.750...2
  
      # Newly disabled tests on cirq 0.8
      # TODO: test & figure out why failing
      "engine_job_test"
      "test_health"
      "test_run_delegation"
    ] ++ lib.optionals stdenv.isAarch64 [
      # Seem to fail due to math issues on aarch64?
      "expectation_from_wavefunction"
  