Hello Liliana and Guix-ers, I like this idea as a more integrated way of using multiple profiles in Guix, which I think is a unique and powerful feature of Guix. Having more first class citizen support of profiles I think is long overdue. Thanks for the proposal!
I'm curious about what else we can then build into this service that might help some of the issues around multiple profiles that have come up before. At the very least it seems this would be a good building block for doing operations where otherwise you'd have to do a bit of looping over profiles (as suggested in the Cookbook, and I think many of us do on our own) like updating packages. There are also some issues that have been raised before that I think this could help address, so here are a few that I've seen that could have some relevance here. Mostly around search-paths and environment variables that get tricky with multiple profiles active. Perhaps not all relevant, but I wanted to cross-reference some related (to me, at least) discussions around multiple profile support in Guix: Recently, we discussed this in the context of some environment variables like XDG_DATA_DIRS, and the more elusive XDG_CONFIG_DIRS here https://issues.guix.gnu.org/50103 The issues is with search-paths and different profiles (e.g. needing a glib package to make sure XDG_DATA_DIRS gets updated). With a more integrated approach to multiple profiles, could this help with combined search-paths? Older, with dbus: https://issues.guix.gnu.org/48538 Here there is a hardcoded default user profile lookup https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/services/xorg.scm#n851 Finally, I think this proposal subsumes the old discussion on https://issues.guix.gnu.org/20255 and I think would be more "canonical" with Guix Home now part of Guix. Anyway, Guix Home does look like a good fit for better profile support and these related edge cases with profiles. I'll just summarize my current usage of profiles, which I think others do as well as it comes from the Cookbook. I have several profiles for different sets of packages, like "desktop," "emacs," and so on, with the default ~/.guix-profile being a testing ground or to quickly use something (temporarily or before moving into a profile). ~/.config/guix has a profiles directory to store each of these and a manifests directory to store the manifests for each. I use a simple bash loop to e.g. guix package for each profile to update with the manifest, or guix gc to clean up. Hope this is helpful for this discussion, John