help-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Profile sourcing and $GUIX_PROFILE when using guix home


From: Julien Lepiller
Subject: Re: Profile sourcing and $GUIX_PROFILE when using guix home
Date: Wed, 29 Sep 2021 11:15:13 -0400
User-agent: K-9 Mail for Android

Le 29 septembre 2021 09:10:44 GMT-04:00, Kenan Toker <kenan@kdtsh.net> a écrit :
>Hello wonderful Guix users and developers!
>
>I am looking for some help understanding fundamental concepts in Guix. 
>In particular, I want to better understand how $GUIX_PROFILE works, and 
>how profiles are sourced when I boot, login, etc. I am using Guix System 
>and generally keep up-to-date with the main branch, usually running a 
>guix pull every other day before I make any configuration changes or 
>install new packages.
>
>I have recently started using guix home, and my $GUIX_PROFILE is 
>automatically set to:
>     ~/.guix-home/profile
>This is currently a symlink to the directory:
>     /gnu/store/708xnkkd86xf4nx9mmf8szpwi4yd9ms2-profile/
>
>I also have a symlink in my $HOME called ~/.guix-profile, which links to:
>     /var/guix/profiles/per-user/me/guix-profile
>This links to the symlink:
>     /var/guix/profiles/per-user/me/guix-profile-n-link
>Which in turn currently links to the directory:
>     /gnu/store/3mjlciy8fywyvajcxy76gy3dscp1bmns-profile/
>
>What I am wondering is:
>     1. Where is $GUIX_PROFILE set for my user, and how has this changed 
>since using guix home?
>     2. ~/.guix-profile/etc/profile seems to have been sourced at some 
>point between booting, logging into my account, and opening an 
>interative shell, because all my packages are present when I run `guix 
>package -I`; I also have all the packages I expect in Gnome Shell. 
>How/when was ~/.guix-profile/etc/profile sourced if it is not set to 
>$GUIX_PROFILE?
>
>Slightly related: before I started using guix home, I found that my 
>$GUIX_PROFILE would sometimes be set to ~/.config/guix/current, which 
>links to:
>     /var/guix/profiles/per-user/me/current-guix
>This links to the symlink:
>     /var/guix/profiles/per-user/me/current-guix-n-link
>Which in turn currently links to the directory:
>     /gnu/store/n6syypzqx7cfr7ypd56ww04313xh888k-profile/
>
>(This behaviour, where $GUIX_PROFILE was ~/.config/guix/current instead 
>of ~/.guix-profile, did not always happen - I have never found a clear 
>pattern as to why it happened when it did. I did find that it would 
>correlate with unexpected behaviour like my laptop not suspending on lid 
>close, but I have never determined the exact cause of this so it might 
>not be related.)
>
>I understand that ~/.config/guix/current is a profile containing the 
>current version of Guix (along with the channels I use), and that 
>~/.guix-profile is a profile containing packages installed to the 
>default profile. On this, I am wondering
>     1. How it is that both ~/.config/guix/current/etc/profile and 
>~/.guix-profile/etc/profile are sourced at some point before or during 
>login?
>     2. Why it was that $GUIX_PROFILE would sometimes be set to 
>~/.config/guix/current (before I started using guix home)?
>
>Thanks a lot everyone,
>Kenan
>

GUIX_PROFILE is not used by guix ittelf, it's only a convenience variable 
that's set just before sourcing said profile.

On a foreign distro, you'll find the code that loads your profile in 
/etc/profile.d/guix.sh

On the guix system, it's /etc/profile directly.

In addition, you might have some code in ~/.profile or ~/.bash_profile.

As you can see, GUIX_PROFILE's value changes multiple times, which explains why 
multiple profiles are loaded in the environment.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]