On 2023-08-18 01:58, Nicolas Graves wrote: > On 2023-08-16 10:10, Nicolas Graves wrote: > >> I guess it's possible to do the same with my home as well (thus only >> saving actual data and not consecutive linking metadata), but that might >> require some more time and fine-grained applications considerations. >> >> One weakness from this impermanence feature is that it's actually >> application-dependent. For guix-system it's not very damaging (except if >> we want very low-level optimizations, like setting nodatacow on >> subvolumes with databases etc), but for guix-home, it makes things much >> more difficult. @Andrew Tropin : maybe that's something we could in RDE in >> a state-btrfs in (gnu home-services state) if we find a way to migrate >> directories to subvolumes safely and reproducibly. > > Some notes about more progress I've done. > > My attempt to also load the /home subvolume on tmfps has quite > progressed. I've created the following subvolumes : > > ;; App related (apps who doesn't entirely follow the XDG base directory > ;; specification and save data or cache outside of XDG_DATA_HOME, > ;; XDG_STATE_HOME and XDG_CACHE_HOME. Other users may need other app dirs. > > /home/graves/.config/chromium > /home/graves/.config/emacs > /home/graves/.config/libreoffice > /home/graves/.config/guix > /home/graves/.ssh > > ;; XDG_CACHE_HOME, XDG_STATE_HOME, XDG_DATA_HOME (I'm using RDE) > > /home/graves/.cache > /home/graves/.local > > ;; And some personal want-to-save directories. > > /home/graves/archives > /home/graves/resources > /home/graves/projects > /home/graves/spheres > > The only thing that seems to get in my way to achieve this properly > is... .guix-home! Which I don't want to backup since it's only a link > and that would require at least /home/graves/ to be snapshotted. > > I thus have a proposition for discussion : > Make .guix-home XDG base dir compliant by storing a symlink > in $XDG_CONFIG_DIR/guix/home to /var/guix/per-user/$user/guix-home > instead of the current default of the symlink > in /home/$user/.guix-home to the actual object in the store. > > This was discussed in a previous mail thread : > "RFC: Configurable placing of the ~/.guix-home symlink" > With Andrew concluding that > >> Back in the day, the implementation of Guix Home required a symlink in >> home directory, right now due to improvements in symlink-manager and >> reconfigure code it's probably not necessary and with a few patches >> /var/guix/profiles/per-user/bob/guix-home/ can be used instead. > > With a first glance, I think it's possible to do in the code, since the > home-run-on-first-login-service-type already gets the UID of the user, > and with the following guile function : > > Scheme Procedure: passwd:name pw > The name of the userid. > > we should be able to get the name of the user and replace > ~/.guix-home with /var/guix/per-user/$user/guix-home everywhere. > So the code where a hardlink is needed will be, and the "pleasing UX of > searching within guix home" would also be possible. > > I also don't really see the reason why .guix-home shouldn't be > $XDG_CONFIG_DIR/guix/home since it's really user-specific and unique > (and XDG user dirs are too), unlike .guix-profile.
I don't have all the context loaded in my head right now, but it's probably possible now, and we can try to implement it. Feel free to send a patch and Cc me or continue the discussion on "RFC: Configurable placing of the ~/.guix-home symlink". > > This may be the one of the only missing step to make the (manual and > only with directories (btrfs subvolumes), at least for now) > implementation of impermanence (a quick reminder of the idea implemented > by nix here : https://nixos.wiki/wiki/Impermanence) on with guix home, I > would appreciate some feedback comments on the idea ;) (another step > would be to actually activate the home environment on login in > home-shell-profile-service-type, but migrating .guix-home would be a > requirement). -- Best regards, Andrew Tropin
signature.asc
Description: PGP signature