Success! I'm now running the Pharo 5.0, Pharo 6.0, and Moose 6.1 images without a hitch.
Some hero has even fixed the libcairo name lookup issue in the Moose image. Now it's searching LD_LIBRARY_PATH and so I have added every shared library there in the wrapper script. I decided to manually write the SCCS version information directly in the package definition and update that with sed. This is the part that I need to maintain manually now: pharo-spur = pharo-vm-build rec { name = "pharo-vm-${version}"; version = "git.${revision}"; binary-basename = "pharo-vm"; src = fetchFromGitHub { owner = "pharo-project"; repo = "pharo-vm"; rev = revision; sha256 = "114ydx015i8sg4xwy1hkb7vwkcxl93h5vqz4bry46x2gnvsay7yh"; }; # metadata compiled into the image: revision = "1c38b03fb043a2962f30f080db5b1292b5b7badb"; sourceDate = "Wed Apr 12 19:25:16 2017 +0200"; sourceURL = "https://github.com/pharo-project/pharo-vm"; }; I will close my PR on the pharo-vm repo too because I ended up packaging the upstream source as-is without depending on any of those changes. Have to think about what's left... tidy up, test with the pharo-launcher image, test on OSX, push to nix upstream... something like that. Thanks for all the help !! Cheers, -Luke