In my lurkings I've seen people wondering why `guix environment` doesn't work with manifests. The answer is simply: I never thought to add it. This patch fixes that. The implementation is kind of interesting and might seem a little silly to people that know how manifests work. In order to support manifests with minimal code and make --manifest compose with other options I simply decompile the manifest back into a list of package/output tuples. That means in the case of `guix environment --manifest=foo.scm` the manifest is created, decompiled, and a new manifest created from that. Seems redundant! The advantage is that since --manifest composes with all the other ways to specify packages we can do absolutely bonkers things like `guix environment guile --ad-hoc ruby --manifest=foo.scm --manifest=bar.scm --load=frob.scm --expression='(@ (gnu packages python) python)'`. More realistically you'd use it to throw in an extra package or two with --ad-hoc. Anyway, hope y'all like it. - Dave