anchor.diff:  
     enableParallelBuilding = true;
     cmakeFlags =
  -    [ "-DARCH=generic;ice40;ecp5"
  +    [ "-DCURRENT_GIT_VERSION=${lib.substring 0 7 (lib.elemAt srcs 0).rev}"
  +      "-DARCH=generic;ice40;ecp5"
         "-DBUILD_TESTS=ON"
         "-DICEBOX_ROOT=${icestorm}/share/icebox"
  -      "-DTRELLIS_ROOT=${trellis}/share/trellis"
  +      "-DTRELLIS_INSTALL_PREFIX=${trellis}"
         "-DPYTRELLIS_LIBDIR=${trellis}/lib/trellis"
         "-DUSE_OPENMP=ON"
         # warning: high RAM usage
  
positive.code:     ++ (lib.optional (enableGui && stdenv.isDarwin)
          "-DOPENGL_INCLUDE_DIR=${OpenGL}/Library/Frameworks");
  
    # Fix the version number. This is a bit stupid (and fragile) in practice
    # but works ok. We should probably make this overrideable upstream.
    patchPhase = with builtins; ''
      substituteInPlace ./CMakeLists.txt \
        --replace 'git log -1 --format=%h' 'echo ${substring 0 11 (elemAt srcs 0).rev}'
  
      # use PyPy for icestorm if enabled
      substituteInPlace ./ice40/family.cmake \
        --replace ''\'''${PYTHON_EXECUTABLE}' '${icestorm.pythonInterp}'
  
negative.code: in
  with stdenv; mkDerivation rec {
    pname = "nextpnr";
    version = "2020.02.04";
  
    srcs = [
      (fetchFromGitHub {
        owner  = "YosysHQ";
        repo   = "nextpnr";
        rev    = "ca733561873cd54be047ae30a94efcd71b3f8be5";
        sha256 = "176drrq6w53qbwmnksa1b22w9qz3gd1db9hy2lyv8svbcdxd9qwp";
        name   = "nextpnr";
      })
      (fetchFromGitHub {
  