anchor.diff:  
   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}";
  
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: 
    enableParallelBuilding = true;
    cmakeFlags =
      [ "-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
  