Hi, first of all, thanks for the improvement. It's really exciting know progress in guix.
But I have a few questions around this change. Just curiosity. :) > Hello Guix! > > Here is the “new” ‘guix pull’ that we discussed notably in this thread: > > https://bugs.gnu.org/22629 > > The major difference is that instead of just building a bunch of modules > and putting them under ~/.config/guix/latest, it now produces a > standalone package (with bin/guix, share/info/guix.info, etc.) and puts > it in a profile under ~/.config/guix/current. Quoth the manual: > > The result of running ‘guix pull’ is a “profile” available under > ‘~/.config/guix/current’ containing the latest Guix. Thus, make sure to > add it to the beginning of your search path so that you use the latest > version, and similarly for the Info manual (*note Documentation::): > > export PATH="$HOME/.config/guix/current/bin:$PATH" > export INFOPATH="$HOME/.config/guix/current/share/info:$INFOPATH" > This sounds like something could be done by guix itself, choosing the right profile path by $HOME. Since guix has absolute control about this piece of information? > This ‘~/.config/guix/current’ profile works like any other profile > created by ‘guix package’ (*note Invoking guix package::). That is, you > can list generations, roll back to the previous generation—i.e., the > previous Guix—and so on: > > $ guix package -p ~/.config/guix/current -l > Generation 1 May 25 2018 10:06:41 > guix 221951a out > /gnu/store/i4dfk7vw5k112s49jrhl6hwsfnh6wr7l-guix-221951af4 > > Generation 2 May 27 2018 19:07:47 > + guix 2fbae00 out > /gnu/store/44cv9hyvxg34xf5kblf5dz57hc52y4bm-guix-2fbae006f > - guix 221951a out > /gnu/store/i4dfk7vw5k112s49jrhl6hwsfnh6wr7l-guix-221951af4 > > Generation 3 May 30 2018 16:11:39 (current) > + guix a076f19 out > /gnu/store/332czkicwwg6lc3x4aqbw5q2mq12s7fj-guix-a076f1990 > - guix 2fbae00 out > /gnu/store/44cv9hyvxg34xf5kblf5dz57hc52y4bm-guix-2fbae006f > $ guix package -p ~/.config/guix/current --roll-back > switched from generation 3 to 2 > >> There are two requirements it fulfills in terms of compatibility: > > 1. The modified ‘build-aux/build-self.scm’ still does the right thing > when evaluated by an “old” Guix—that is, it produces a bunch of > modules for use in ~/.config/guix/latest as before. > > 2. The modified ‘guix pull’ produces ~/.config/guix/current even when > invoked on a commit of a past Guix. That is, it automatically > produces a ‘guix’ command using the modules returned by the old > ‘build-self.scm’. > > > We could add ‘guix pull’ options for convenient: ‘--roll-back’, > ‘--profile’, etc. > Nice~ > Going forward, additional “channels” could be presented as entries in > the ~/.config/guix/current manifest. > > Caveats: > > 1. The ~/.config/guix/current profile really lives there. That is, > unlike ~/.guix-profile, it’s not in /var/guix/profiles/per-user. > That could be an issue for cluster setups where home directories > are not scanned by the Guix GC. Cluster folks, please tell me! What does that mean? We have a guix directory under $HOME/.config, inside there's a symlink to /gnu/store/...-guix-<commit>. Does "really lives there" mean the new profile is not a symlink but a concrete directory or hard link? > > 2. The translated Info manual is not built. Julien: could you turn > the big ‘xref_command’ in a script or something that we can more > easily reuse in (guix self)? > > 3. C++ code is not built. I wonder which will come first: getting rid > of the C++ code, or building it? :-) > In the future world, how do we update guix daemon? Is't still running guix pull && guix package -u under root user?