Hi, Am Mittwoch, dem 25.05.2022 um 14:01 +0300 schrieb Andrew Tropin: > On 2022-05-24 20:31, Liliana Marie Prikler wrote: > > > Hi, > > > > Am Dienstag, dem 24.05.2022 um 14:55 +0300 schrieb Andrew Tropin: > > > > > On 2022-05-23 19:05, Liliana Marie Prikler wrote: > > > > [...] > > > > I don't think I agree with this choice. To satisfy both my own > > > > use case of serving profiles in different locations from > > > > another and another issue being raised w.r.t. configuring the > > > > location of the .guix-home profile, I think we should make a > > > > triple of location, optional short name, and manifest (which > > > > may be generated from packages implicitly). WDYT? > > > > > > > > > > This service is intended for profiles managed by Guix Home, so > > > every profile MUST be a part of home-environment (~/.guix-home is > > > a symlink to it). I don't see any meaningful reasons to make it > > > possible to customize the path inside home-environment. > > Why though? The decision to restrict Guix Home to dotfiles was > > already a bad one that has since been overturned, so I think we > > should carefully evaluate why "~/.guix-home" even is special. In > > my point of view, any path that is prefixed with the user's home > > ought to be fair game, as should be constructing intermediate per- > > user profile symlinks in /var/guix. > > It's not bad, it had and has its own goals, pros and cons, I found > another design descision, which we think is more intuitive, but still > partially serving original goals and we switched to it. The > disucssion about ~/.guix-home symlink itself is unrelated to both > "dotfiles question" and my original statement. Perhaps it's only tangentially related, but it highlights a point of contention that I have with Guix Home overall, being that it takes a few very idiosyncratic "shortcuts", that I don't think make too much sense in the wider sense of Guix. Consider %profile-directory, for example. I can't see it anywhere in the code for Guix Home, so I assume generations are currently littered into the user home. The specific choice of moving ~/.guix-profile to ~/.guix-home is another. Assume I only want to use Guix Home for one or two config files, well nope you can't unless you're willing to move you packages as well or willing to have a pointless symlink that you didn't ask for.
Don't get me wrong, this is still mostly about managing multiple profiles with Guix Home, but the way I see it, Guix Home's own profile management could also be improved. > All dot/xdg/other files belong to home-environment and no side- > effects are done during the build of home-environment, the only side- > effects happens during activation and $HOME touched only by symlink- > manager and I would like to keep it to be the case, otherwise we will > end up with tons of stateful ad-hoc hacks. I struggle to see how my proposal would complicate that other than adding more jobs to symlink manager (perhaps?). For what it's worth, I do think that job could be much simplified too by storing the symlinks in an association list (("~/path/to/symlink" "/gnu/store/path/to/target") ...), which could be part of a Guix Home "profile" just like manifest.scm is part of a normal Guix profile. The activation script would then read this table, expand "~" (as well as check that it is the first letter i each of the first paths) and create the symlinks according to spec. Best of all, it doesn't even matter that much if the target is in the store, in /var/guix/profiles/per-user, or even another place relative to ~. Note that I believe that at the point of writing this file variables such as $XDG_CONFIG_HOME should already have been resolved relative to $HOME, with the former being specified in home-configuration or assuming their usual defaults. YMMV on whether that's actually useful, one could alternatively allow $XDG_CONFIG_HOME/ etc. as leading sequences too, though that invites more errors when experimenting with homeless shelters outside of clean shells. > That said, I would like to avoid any Guix Home logic to rely on paths > outside of home-environment. In case you really need > ~/work/my-project/guix-profile to be created for some reason you can > extend home-files-service-type and rely on symlink-manager to do this > dirty job, but the setup-environment script will still source > home-environment/profiles/your-profile-name and won't know anything > about ~/work/my-project/guix-profile. Sounds dirty. > > > > > > > Cheers