Hello Edouard, On June 14, 2025 11:23:33 AM GMT+02:00, Edouard Klein <[email protected]> wrote: >Hi ! > >I'm trying to let users reconfigure their home configuration on a shared >guix system, but we can't all have a 700MB .cache/guix dir. I've solved >part of the problem by forbidding guix pull and deploying an up-to-date >system wide guix regularly. > >However, when running guix home reconfigure config.scm, with config.scm >containing the most empty home configuration in the history of empty >home configurations: > >#+begin_src scheme >(use-modules (beaver home) > (gnu home)) > >(-> (home-environment > (packages '()) > (essential-services '()) > (services '()) > (location #f))) >#+end_src > >guix dutifully pulls the whole guix repo into the cache :/ > >I know there is a system service I can use to deploy the home >configuration too, but this makes us lose the flexibility of having a >user-configurable home. > >I think I'll maintain a systemwide cache as a workaround, but any >guidance as to why guix home needs a full copy of the whole history of >guix would help me understand how to get rid of that. >
Both guix home and guix system reconfigure need this to be able to check if the update you are making is a forward update, and to forbid a backward one by default. You can allow it by --allow-downgrades, but you will still get a warning and to get that, the repo has to be pulled, fully. Then it is checked if the current guix commit used for reconfigure is descendant of the previous one used for reconfigure. There is no way to disable this currently without modifying guix source itself. I came up with an idea on how to share the checkouts between multiple users using bind mounts, see <https://ruther.ditigal.xyz/posts/shared-guix-checkout/>. The only downside is that users could potentially corrupt the cache for other if they were bad actors. Rutherther > >Thanks in advance. > >Edouard.
