guix-install.sh: Check for existing installation before downloading.

Previously, the check came after guix_get_bin.  There’s no need to fetch
the rather large release archive if there’s an existing installation, so
check first.  Refactor the check into a function similar to other
preflight checks.

* etc/guix-install.sh: Check for existing installation before
downloading.

Change-Id: I5506fb1cacdc88bd6355e8dfa1f690acf7886c1f
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Liam Hupfer 2025-02-05 22:25:05 -06:00 committed by Ludovic Courtès
parent 201db94628
commit bff76fe66a
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -315,6 +315,19 @@ chk_sys_nscd()
fi
}
chk_existing()
{ # Avoid clobbering existing installations.
_debug "--- [ ${FUNCNAME[0]} ] ---"
if [[ -e /var/guix && -e /gnu ]]; then
if [ -n "$GUIX_ALLOW_OVERWRITE" ]; then
_msg_warn "Overwriting existing installation!"
else
die "A previous Guix installation was found. Refusing to overwrite."
fi
fi
}
# Configure substitute discovery according to user's preferences.
# $1 is the installed service file to edit.
configure_substitute_discovery() {
@ -393,16 +406,6 @@ sys_create_store()
local pkg="$1"
local tmp_path="$2"
_debug "--- [ ${FUNCNAME[0]} ] ---"
if [[ -e /var/guix && -e /gnu ]]; then
if [ -n "$GUIX_ALLOW_OVERWRITE" ]; then
_msg_warn "Overwriting existing installation!"
else
die "A previous Guix installation was found. Refusing to overwrite."
fi
fi
cd "$tmp_path"
_msg_info "Installing /var/guix and /gnu..."
# Strip (skip) the leading . component, which fails on read-only /.
@ -875,6 +878,7 @@ main_install()
chk_gpg_keyring
chk_sys_arch
chk_sys_nscd
chk_existing
_msg_info "system is ${ARCH_OS}"