Hey all, I'm using Arch Linux and I'd like to get my hands dirty with Guix as an alternative (but better) package manager. Unfortunately, I'm very confused as for the role of `guix pull` and `guix package -u` and the 'current guix profile' symlinked to ~/.config/guix/current .
In 'traditional` package managers, there's the concept of a "repository" which seems to correspond to all the scheme code written in gnu/packages/*.scm under the Guix Git repository. Usually, the repositories (or more precisely, the package definitions) are managed separately from the source code of the package manager itself, and very reasonably IMO. Since the source code to retrieve packages / reading definitions and building them shouldn't be linked to changes such as packages added or updated in the repositories. According to the documentation, `guix pull` 'updates the distribution along with the Guix tools'. Does it mean that every time something is updated in the actual source code of the remote Guix repository, when I run `guix pull` afterwards my computer builds `guix` and `guix-daemon` from the ground up? Does it actually run `./configure && make && make check` behind the scenes on the source files? If so, that's insanely CPU wasteful and definitely unnecessary. This wouldn't have been that bad if Guile would have had a compiler cache like C and some other languages have (see [ccache][1] and [sccache][2]). Additionally, I'm not sure I understand the relation between `guix pull` and `guix package -u`. Let's say I'm running `guix pull` and some packages have been updated / added. Do I have to use the guix binary in ~/.config/guix/current/bin/ in order to install them? Speaking of which, what is the purpose of this profile anyway? Why doesn't `guix pull` just updates a database of all package definitions and then suggests to run `guix package -u` to do all the rest - including updating `guix` it self in the default profile **if needed**? One more unclear thing for me: If I run `guix pull`, I always get the message that I should add ~/.config/guix/current/bin/ to my $PATH so I'd use the latest `guix`. Does it mean that with using `guix` from ~/.guix-profile/bin I don't really get any updates? I hope the design decisions of the way things work now are genius as the rest of the ecosystem and that I've failed to see that. Anyway, above all, I'm not sure as for what `etc/profile` files to `source` so my $PATH and other environmental variables will always be up to date with the current state.. Thanks for any help, Doron. [1]: https://ccache.samba.org [2]: https://github.com/mozilla/sccache
