Subject: bug#30728: Modification for guix installation script.

From: Clément Lassieur <[email-masked]>
Date: Mon, 26 Mar 2018 14:59:30 +0200

Hi Ricardo and Marius,

Marius Bakke <[email-masked]> writes:

> The binary installation tarball only comes with a profile for 'root'.

Indeed, but it's easy to copy it for any user isn't it?

> 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.

Ricardo Wurmus <[email-masked]> writes:

> Hi Clément,
>
>> As I said to Chris (Cc'ed), I don't think it's a good idea to install
>> Guix in root's home directory.  Instead, we should probably honor the
>> USER and HOME environment variables, so that the command can be run as a
>> non-root user (with sudo) in a consistent way.  What do you think?
>
> The script should be run as root as it follows the manual’s
> instructions, which tell people to install Guix for the root user and
> then make it available system-wide.
>
> This is why I think that it would be correct to install it to the root’s
> home directory and not to the sudoing user’s HOME.
>
> Or am I missing something?

Thank you both for your comments. :-)

What I dislike with the present state of things is the need for Guix to
be installed within root's directory.  For two reasons :

  1. I don't think a command should ever install something in another
     user's home directory.  The home directory of a user is for things
     that are specific to that user, I believe.

  2. Users need to update the root profile if they want to update the
     Guix daemon, which is cumbersome.

The systemd configuration file must know where to find the Guix daemon.
If it's not in ~root, it must be in the user's home directory.  Either
way, the Guix daemon, which is system-wide, still depends on a user.

(A way to make the daemon user-independant would be to add a new command
that would update, say, /var/guix/guix-daemon, with the systemd
configuration file pointing to it.)

I personally prefer that the Guix daemon points to my home directory
because I don't want to update root's profile.  Some other people might
prefer that it points to ~root because they might later delete their
profile and want Guix to keep working.

Do we have to take a decision here?  Can't we just let the user decide
by letting them customize their environment variables?  I think it is
the point of environment variables: giving freedom to users.