anchor.diff:  
     enableParallelBuilding = true;
     cmakeFlags =
  -    [ "-DARCH=generic;ice40"
  +    [ "-DARCH=generic;ice40;ecp5"
         "-DICEBOX_ROOT=${icestorm}/share/icebox"
  +      "-DTRELLIS_ROOT=${trellisRoot}/trellis"
       ] ++ (stdenv.lib.optional (!enableGui) "-DBUILD_GUI=OFF");
   
     # Fix the version number. This is a bit stupid (and fragile) in practice
  
positive.code: { stdenv, fetchFromGitHub, cmake
  , boost, python3
  
  # TODO: also add libtrellis, later on
  , icestorm
  
  # TODO(thoughtpolice) Currently the GUI build seems broken at runtime on my
  # laptop (and over a remote X server on my server...), so mark it broken for
  
negative.code: 
  let
    boostPython = boost.override { python = python3; enablePython = true; };
  
    # This is a massive hack. For now, Trellis doesn't really support
    # installation through an already-built package; you have to build it once to
    # get the tools, then reuse the build directory to build nextpnr -- the
    # 'install' phase doesn't install everything it needs.  This will be fixed in
    # the future but for now we can do this horrific thing.
    trellisRoot = trellis.overrideAttrs (_: {
      installPhase = ''
        mkdir -p $out
        cp *.so ..
        cd ../../.. && cp -R trellis database $out/
      '';
    });
  in
  stdenv.mkDerivation rec {
    name = "nextpnr-${version}";
  