David Thompson <dthomps...@worcester.edu> skribis: > From 26cac530c7a1f69864fc819bdc14553eacd9dc23 Mon Sep 17 00:00:00 2001 > From: David Thompson <dthomps...@worcester.edu> > Date: Sun, 21 Sep 2014 13:40:05 -0400 > Subject: [PATCH] scripts: Add 'environment' command. > > * guix/scripts/environment.scm: New file. > * Makefile.am (MODULES): Add it. > * doc/guix.texi ("Invoking guix environment"): New node.
Nice! I didn’t mention it before but it would be wonderful if you could come up with a little test case. It’s a bit difficult, esp. since the tests cannot assume that will download & build the world. So basically the test could do, in a tests/guix-environment.sh script: guix environment -e '(@@ (gnu packages bootstrap) %bootstrap-guile)' ... and make sure it at least sees ‘guile’ in $PATH. WDYT? That can come in a later commit if you prefer. > diff --git a/doc/guix.texi b/doc/guix.texi > index c9760f5..5b9c933 100644 > --- a/doc/guix.texi > +++ b/doc/guix.texi > @@ -2417,6 +2417,7 @@ programming interface of Guix in a convenient way. > * Invoking guix hash:: Computing the cryptographic hash of a file. > * Invoking guix refresh:: Updating package definitions. > * Invoking guix lint:: Finding errors in package definitions. > +* Invoking guix environment:: Creating new environments from package > inputs. “Setting up development environments.” maybe? We should also add a @dircategory Software development @direntry ... at the top of the file for this node. > +@node Invoking guix environment > +@section Invoking @command{guix environment} > + > +The purpose of @command{guix environment} is to assist hackers in > +creating reproducible development environments without polluting their > +package profile. The @command{guix environment} tool takes a package, s/a package/one or more packages/ > +The new shell's environment is an augmented version of the environment > +that @command{guix environment} was run in. It contains the necessary > +search paths for building the given package added to the existing > +environment variables. To create a ``pure'' environment in which the > +original environment variables have been unset, use the @code{--pure} > +option. > + > +Additionally, more than one package may be specified. + something like “, in which case all the inputs ... For example, the command below spawns a shell where all the dependencies of both Guile and Emacs are available:” > +@item --exec=@var{command} > +@item -e @var{command} Should be -E. > +@item --search-paths > +Display needed environment variable definitions. “Display the environment variable definitions that make up the environment”, or something like that? (I find “needed” ambiguous.) > +@end table Here add something like: It also supports all the common build options that @command{guix build} supports (@pxref{Invoking guix build, common build options}). The rest is good! Thanks, Ludo’.