Fix installer script bugs

- --no-channel-add didn't have effect on multi-user installation
- some new flags didn't work at all
- document all installer flags
This commit is contained in:
Domen Kožar 2020-05-26 15:49:26 +02:00
parent 909bdfb4b4
commit 1a5ac894e9
No known key found for this signature in database
GPG key ID: C2FFBCAFD2C24246
2 changed files with 22 additions and 15 deletions

View file

@ -29,6 +29,7 @@ readonly NIX_FIRST_BUILD_UID="30001"
# Please don't change this. We don't support it, because the # Please don't change this. We don't support it, because the
# default shell profile that comes with Nix doesn't support it. # default shell profile that comes with Nix doesn't support it.
readonly NIX_ROOT="/nix" readonly NIX_ROOT="/nix"
readonly NIX_EXTRA_CONF=${NIX_EXTRA_CONF:-}
readonly PROFILE_TARGETS=("/etc/bashrc" "/etc/profile.d/nix.sh" "/etc/zshrc") readonly PROFILE_TARGETS=("/etc/bashrc" "/etc/profile.d/nix.sh" "/etc/zshrc")
readonly PROFILE_BACKUP_SUFFIX=".backup-before-nix" readonly PROFILE_BACKUP_SUFFIX=".backup-before-nix"
@ -452,9 +453,11 @@ create_directories() {
} }
place_channel_configuration() { place_channel_configuration() {
echo "https://nixos.org/channels/nixpkgs-unstable nixpkgs" > "$SCRATCH/.nix-channels" if [ -z "$NIX_INSTALLER_NO_CHANNEL_ADD" ]; then
_sudo "to set up the default system channel (part 1)" \ echo "https://nixos.org/channels/nixpkgs-unstable nixpkgs" > "$SCRATCH/.nix-channels"
install -m 0664 "$SCRATCH/.nix-channels" "$ROOT_HOME/.nix-channels" _sudo "to set up the default system channel (part 1)" \
install -m 0664 "$SCRATCH/.nix-channels" "$ROOT_HOME/.nix-channels"
fi
} }
welcome_to_nix() { welcome_to_nix() {
@ -636,13 +639,14 @@ setup_default_profile() {
export NIX_SSL_CERT_FILE=/nix/var/nix/profiles/default/etc/ssl/certs/ca-bundle.crt export NIX_SSL_CERT_FILE=/nix/var/nix/profiles/default/etc/ssl/certs/ca-bundle.crt
fi fi
# Have to explicitly pass NIX_SSL_CERT_FILE as part of the sudo call, if [ -z "$NIX_INSTALLER_NO_CHANNEL_ADD" ]; then
# otherwise it will be lost in environments where sudo doesn't pass # Have to explicitly pass NIX_SSL_CERT_FILE as part of the sudo call,
# all the environment variables by default. # otherwise it will be lost in environments where sudo doesn't pass
_sudo "to update the default channel in the default profile" \ # all the environment variables by default.
HOME="$ROOT_HOME" NIX_SSL_CERT_FILE="$NIX_SSL_CERT_FILE" "$NIX_INSTALLED_NIX/bin/nix-channel" --update nixpkgs \ _sudo "to update the default channel in the default profile" \
|| channel_update_failed=1 HOME="$ROOT_HOME" NIX_SSL_CERT_FILE="$NIX_SSL_CERT_FILE" "$NIX_INSTALLED_NIX/bin/nix-channel" --update nixpkgs \
|| channel_update_failed=1
fi
} }

View file

@ -41,7 +41,6 @@ fi
INSTALL_MODE=no-daemon INSTALL_MODE=no-daemon
CREATE_DARWIN_VOLUME=0 CREATE_DARWIN_VOLUME=0
NIX_EXTRA_CONF=
# handle the command line flags # handle the command line flags
while [ $# -gt 0 ]; do while [ $# -gt 0 ]; do
case $1 in case $1 in
@ -50,20 +49,20 @@ while [ $# -gt 0 ]; do
--no-daemon) --no-daemon)
INSTALL_MODE=no-daemon;; INSTALL_MODE=no-daemon;;
--no-channel-add) --no-channel-add)
NIX_INSTALLER_NO_CHANNEL_ADD=1;; export NIX_INSTALLER_NO_CHANNEL_ADD=1;;
--daemon-user-count) --daemon-user-count)
NIX_USER_COUNT=$2 export NIX_USER_COUNT=$2
shift;; shift;;
--no-modify-profile) --no-modify-profile)
NIX_INSTALLER_NO_MODIFY_PROFILE=1;; NIX_INSTALLER_NO_MODIFY_PROFILE=1;;
--darwin-use-unencrypted-nix-store-volume) --darwin-use-unencrypted-nix-store-volume)
CREATE_DARWIN_VOLUME=1;; CREATE_DARWIN_VOLUME=1;;
--nix-extra-conf-file) --nix-extra-conf-file)
NIX_EXTRA_CONF=$(cat $2) export NIX_EXTRA_CONF="$(cat $2)"
shift;; shift;;
*) *)
( (
echo "Nix Installer [--daemon|--no-daemon] [--no-channel-add] [--no-modify-profile]" echo "Nix Installer [--daemon|--no-daemon] [--daemon-user-count INT] [--no-channel-add] [--no-modify-profile] [--darwin-use-unencrypted-nix-store-volume] [--nix-extra-conf-file FILE]"
echo "Choose installation method." echo "Choose installation method."
echo "" echo ""
@ -82,6 +81,10 @@ while [ $# -gt 0 ]; do
echo " --no-modify-profile: Skip channel installation. When not provided nixpkgs-unstable" echo " --no-modify-profile: Skip channel installation. When not provided nixpkgs-unstable"
echo " is installed by default." echo " is installed by default."
echo "" echo ""
echo " --daemon-user-count: Number of build users to create. Defaults to 32."
echo ""
echo " --nix-extra-conf-file: Path to nix.conf to prepend when installing /etc/nix.conf"
echo ""
) >&2 ) >&2
# darwin and Catalina+ # darwin and Catalina+