Skip to content
Snippets Groups Projects
Commit eec5409a authored by Manav Rathi's avatar Manav Rathi Committed by Domen Kožar
Browse files

installation: allow profile modification to be skipped (#1072)

The current behaviour modifies the first writeable file from amongst
.bash_profile, .bash_login and .profile.  So .bash_profile (if it is
writable) would be modified even if a user has already sourced nix.sh
in, say, .profile.

This commit introduces a new environment variable,
NIX_INSTALLER_NO_MODIFY_PROFILE.  If this is set during installation,
then the modifications are unconditionally skipped.

This is useful for users who have a manually curated set of dotfiles
that they are porting to a new machine. In such scenarios, nix.sh is
already sourced at a place where the user prefers.  Without this
change, the nix installer would insist on modifying .bash_profile if
it exists.

This commit also add documentations for both the current behaviour and
the new override.
parent 18b7363a
No related branches found
No related tags found
No related merge requests found
...@@ -26,6 +26,14 @@ $ mkdir /nix ...@@ -26,6 +26,14 @@ $ mkdir /nix
$ chown alice /nix $ chown alice /nix
</screen> </screen>
The install script will modify the first writable file from amongst
<filename>.bash_profile</filename>, <filename>.bash_login</filename>
and <filename>.profile</filename> to source
<filename>~/.nix-profile/etc/profile.d/nix.sh</filename>. You can set
the <command>NIX_INSTALLER_NO_MODIFY_PROFILE</command> environment
variable before executing the install script to disable this
behaviour.
</para> </para>
<!-- <!--
......
...@@ -89,21 +89,25 @@ if [ -z "$_NIX_INSTALLER_TEST" ]; then ...@@ -89,21 +89,25 @@ if [ -z "$_NIX_INSTALLER_TEST" ]; then
$nix/bin/nix-channel --update nixpkgs $nix/bin/nix-channel --update nixpkgs
fi fi
# Make the shell source nix.sh during login.
p=$HOME/.nix-profile/etc/profile.d/nix.sh
added= added=
for i in .bash_profile .bash_login .profile; do if [ -z "$NIX_INSTALLER_NO_MODIFY_PROFILE" ]; then
fn="$HOME/$i"
if [ -w "$fn" ]; then # Make the shell source nix.sh during login.
if ! grep -q "$p" "$fn"; then p=$HOME/.nix-profile/etc/profile.d/nix.sh
echo "modifying $fn..." >&2
echo "if [ -e $p ]; then . $p; fi # added by Nix installer" >> $fn for i in .bash_profile .bash_login .profile; do
fn="$HOME/$i"
if [ -w "$fn" ]; then
if ! grep -q "$p" "$fn"; then
echo "modifying $fn..." >&2
echo "if [ -e $p ]; then . $p; fi # added by Nix installer" >> $fn
fi
added=1
break
fi fi
added=1 done
break
fi fi
done
if [ -z "$added" ]; then if [ -z "$added" ]; then
cat >&2 <<EOF cat >&2 <<EOF
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment