A different approach at package management. Inspire by functional programming. Installing a package defines a new system generation shadowing the previous one. The older generation aren't removed. You can thus have multiple version of a package on disk and jump back and forth between generations.
ps: also stronger transactional semantics. You can only switch to a new generation if all went right, and the old generation is still as correct.
Few times under other distro an update changed some dynamic library that then caused a crash when some already in-memory program decided he wanted to link to it.
Is there a recommended approach for using Guix along with VMs or containers (in the most general sense)?
My day-to-day machine is a mac laptop; but for my software development work, I have been using docker-machine, docker-compose and docker server/client to configure, spin up, wire together, and tear down repeatable Linux environments, which run inside VirtualBox on my mac.
I'm interested in what a comparable (in a broad sense) workflow might look like with Guix, but I'm not quite sure where/how to start.
"guix environment" can spawn a container to run software in isolation. There's also "guix system vm" to build a virtual machine, or "guix system container".
Note, though, that Guix has not been ported to MacOS yet.
I don't want a full port, at least I'm pretty sure I don't; consider, with my current setup I'm always running the Docker daemon on a Linux host. In a bash shell running on MacOS, I'm using the client-side command-line Docker tools (the three I mentioned previously), which have been ported; and the Mac edition of VirtualBox is obviously running on MacOS as well.
Is there any possibility of using the guix command-line tools, ported to MacOS, which would then talk to a remote Linux host (could be in the cloud, could be a VirtualBox VM running locally on my mac laptop, etc.)? Does guix envision a client/server "mode" of usage?
You can use the guix command line tool and let it talk to a remote guix-daemon. I would not know how to set this up on a Mac, but Guix is in fact designed such that the command line tool is separate from the daemon.
I'm using this feature to provide users of our scientific compute clusters with a way to manage their software on all cluster nodes. The Guix tool on the nodes connects to one central guix-daemon.
That's all GNU/Linux, though. I don't know if this could work on a Mac. You could ask on [email protected] or on #guix at freenode.