Clément Lassieur writes: > Hi Chris, > > Chris Marusich writes: > >> Clément Lassieur writes: >> >>> Clément Lassieur writes: >>> >>>> Hi, >>>> >>>> My system is Ubuntu 16.04. >>>> >>>> I ran './guix-install.sh' and got the message: "This script must be run >>>> as root.". So I ran 'sudo ./guix-install.sh' and got an error message >>>> saying that: >>>> >>>> GUIX_PROFILE="${HOME}/.guix-profile" >>>> source "${GUIX_PROFILE}/etc/profile" >>>> >>>> the 'source' command doesn't work because ${GUIX_PROFILE} was never >>>> created, ${HOME} being /home/clement, not /root. >>>> >>>> To recover from this I had to manually delete /var/guix and /gnu, log as >>>> root with 'su', and start again. >>>> >>>> Clément >>> >>> I believe the script should install Guix in the user's home directory, >>> not in ~root. >> >> The manual says (see: (guix) Binary Installation): >> >> 3. Make ‘root’’s profile available under ‘~/.guix-profile’: >> >> # ln -sf /var/guix/profiles/per-user/root/guix-profile \ >> ~root/.guix-profile > > I think the manual is wrong here. This only makes sense if the user is > 'root'. Otherwise, the user would expect Guix to be installed in their > home, not in root's home. We could use the HOME and USER environment > variables like this: > > # ln -sf /var/guix/profiles/per-user/$USER/guix-profile $HOME/.guix-profile > > Thus, even if 'sudo' decides to change these environment variables, it > will still be consistent. The binary installation tarball only comes with a profile for 'root'. The problem is that the installation script assumes $HOME will expand to ~root when sourcing the profile, but as you found that isn't always the case. ~root/.guix-profile is "hard-coded" many other places in the script, so Tatianas solution seems sensible to me.