I wrote a script a while back for faking out stack so it would accept newer GHCJS sdists.
As @mgsloan noted in the comments, this could be avoided if stack wasn't so persnickety about how the archive's folder is named. All I need to do in my script, is rename the folder within the sdist archive to match the compiler format (e.g. "ghcjs-0.2.0.20160107_ghc-7.10.2").
A potential method (what my script is doing) would be to just assume any folder named "ghcjs-*" within the archive is what stack needs and then copy that to the appropriate location and boot it.