With the signing key set up and /etc/config.scm edited to use the normal-ass Linux kernel, you can run the overly long `guix system reconfigure` command from the blog. The command it gives is also bad advice, since it manually specifies the substitute server URLs, but they should be in config.scm. But whatever.
But the manual is generally very poor, so you *have* to turn to unofficial sources, and it's very difficult for a newcomer to distinguish good advice from bad.
The blog says to do some stuff. I do the stuff, and get this output:
> guix archive: warning: replacing symbolic link /etc/guix/acl with a regular file > hint: On Guix System, add all `authorized-keys' to the `guix-service-type' service of your `operating-system' instead.
If you don't do that, then `guix describe` (which lists available channels) won't have the channel.
I think this is because the pull upgraded some part of the OS state, but Guix works by using $PATH as a list of pointers into /gnu/store, and the guix you run isn't the new one that knows about the channel.
but like
This is a brand new install that used the network. Why is stuff changing two minutes after the install like this? Why isn't GUIX_PROFILE set for me already? Why does it need profiles *at all*?
The Guix manual doesn't have an obvious thing explaining what profiles are, or why I'd want to use them, or examples of applying them. There's some stuff about them in the section on packaging (which I don't care about yet).
After you add a channel, you run `guix pull`, which fetches stuff from that channel, but also upgrades packages that are currently installed. Seems convenient, I have a thing that does an apt update && apt upgrade which I use a bunch.
but
Sometimes -- not all the time, and I don't know why! -- it prints this out:
> hint: Consider setting the necessary environment variables by running: > > GUIX_PROFILE="$HOME/.guix-profile" > . "$GUIX_PROFILE/etc/profile" > > Alternately, see `guix package --search-paths -p "$HOME/.guix-profile"'.
Making the situation even more bizarre, the config.scm is what creates the user accounts on the system. So bootstrapping a system with a normal Linux kernel means you make a config.scm with the linux-libre kernel and some user, then configure that user's channels (by plopping a file into ~/.config/guix/channels.scm), then editing config.scm, then reconfiguring the system as that user.
This feels completely bizarre. Why not have system channels and do it all in one go?
You configure your system with /etc/config.scm. If you want software that doesn't come with Guix proper (like drivers for your hardware), that has to come from a "channel," which is the Guix thing akin to a package repo in other distros. But on Guix, channels are per-user instead of whole-system. As far as I can tell, there simply is no support for channels that apply to the whole system.
Which means the exact same config.scm will work or fail based on which user tries to use it.
That feels incredibly wrong to me, and I can't find any rationale for why it works like this.
As much shit as I (rightly) give Guix, having an option to install an Emacs/EXWM environment right in the installer is a a thing I appreciate, which has a 0% chance of happening in any other distro.