|
|
|
@ -118,36 +118,35 @@ in
|
|
|
|
|
send_email=yes
|
|
|
|
|
email_subject="Upgrade failed (exit code $exit_code)"
|
|
|
|
|
email_body="The system upgrade started at $start_time has failed with exit code $exit_code."
|
|
|
|
|
fi
|
|
|
|
|
else
|
|
|
|
|
echo "→ Determining package differences." | tee -a "$output_file"
|
|
|
|
|
installed_packages()
|
|
|
|
|
{
|
|
|
|
|
${nix-store} --query --requisites "$1" | cut -d- -f2- | sort | uniq
|
|
|
|
|
}
|
|
|
|
|
current_packages="$(installed_packages /run/current-system)"
|
|
|
|
|
built_packages="$(installed_packages /nix/var/nix/profiles/system)"
|
|
|
|
|
${diff} -y --suppress-common-lines --width=71 \
|
|
|
|
|
<(printf "Current generation\n------------------\n%s" "$current_packages") \
|
|
|
|
|
<(printf "New generation\n--------------\n%s" "$built_packages") \
|
|
|
|
|
| tee -a "$output_file" || true
|
|
|
|
|
|
|
|
|
|
echo "→ Determining package differences." | tee -a "$output_file"
|
|
|
|
|
installed_packages()
|
|
|
|
|
{
|
|
|
|
|
${nix-store} --query --requisites "$1" | cut -d- -f2- | sort | uniq
|
|
|
|
|
}
|
|
|
|
|
current_packages="$(installed_packages /run/current-system)"
|
|
|
|
|
built_packages="$(installed_packages /nix/var/nix/profiles/system)"
|
|
|
|
|
${diff} -y --suppress-common-lines --width=71 \
|
|
|
|
|
<(printf "Current generation\n------------------\n%s" "$current_packages") \
|
|
|
|
|
<(printf "New generation\n--------------\n%s" "$built_packages") \
|
|
|
|
|
| tee -a "$output_file" || true
|
|
|
|
|
booted_version="$(readlink /run/booted-system/{initrd,kernel,kernel-modules})"
|
|
|
|
|
built_version="$(readlink /nix/var/nix/profiles/system/{initrd,kernel,kernel-modules})"
|
|
|
|
|
|
|
|
|
|
booted_version="$(readlink /run/booted-system/{initrd,kernel,kernel-modules})"
|
|
|
|
|
built_version="$(readlink /nix/var/nix/profiles/system/{initrd,kernel,kernel-modules})"
|
|
|
|
|
|
|
|
|
|
echo "→ Checking if a reboot is needed." | tee -a "$output_file"
|
|
|
|
|
if [ "$booted_version" != "$built_version" ] ; then
|
|
|
|
|
version_comparison="$(cat <<-EOF
|
|
|
|
|
echo "→ Checking if a reboot is needed." | tee -a "$output_file"
|
|
|
|
|
if [ "$booted_version" != "$built_version" ] ; then
|
|
|
|
|
version_comparison="$(cat <<-EOF
|
|
|
|
|
The booted kernel version
|
|
|
|
|
$(indent "$booted_version")
|
|
|
|
|
does not match the newly built
|
|
|
|
|
$(indent "$built_version")
|
|
|
|
|
.
|
|
|
|
|
EOF
|
|
|
|
|
)"
|
|
|
|
|
echo "$version_comparison"
|
|
|
|
|
send_email=yes
|
|
|
|
|
email_body="$(cat <<-EOF
|
|
|
|
|
)"
|
|
|
|
|
echo "$version_comparison"
|
|
|
|
|
send_email=yes
|
|
|
|
|
email_body="$(cat <<-EOF
|
|
|
|
|
$email_body
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -155,25 +154,26 @@ in
|
|
|
|
|
------------------------------
|
|
|
|
|
$version_comparison
|
|
|
|
|
EOF
|
|
|
|
|
)"
|
|
|
|
|
activate_configuration="no"
|
|
|
|
|
if [ "$reboot_allowed" = "yes" ] && [ $exit_code -eq 0 ] ; then
|
|
|
|
|
email_body="$(printf "%s\n%s" "$email_body" "The system will reboot now.")"
|
|
|
|
|
do_reboot="yes"
|
|
|
|
|
activate_configuration="yes"
|
|
|
|
|
email_subject_additions="$email_subject_additions, system will reboot"
|
|
|
|
|
else
|
|
|
|
|
email_body="$(printf "%s\n%s" "$email_body" "The upgraded configuration will be activated on the next reboot.")"
|
|
|
|
|
email_subject_additions="$email_subject_additions, reboot required"
|
|
|
|
|
)"
|
|
|
|
|
activate_configuration="no"
|
|
|
|
|
if [ "$reboot_allowed" = "yes" ] && [ $exit_code -eq 0 ] ; then
|
|
|
|
|
email_body="$(printf "%s\n%s" "$email_body" "The system will reboot now.")"
|
|
|
|
|
do_reboot="yes"
|
|
|
|
|
activate_configuration="yes"
|
|
|
|
|
email_subject_additions="$email_subject_additions, system will reboot"
|
|
|
|
|
else
|
|
|
|
|
email_body="$(printf "%s\n%s" "$email_body" "The upgraded configuration will be activated on the next reboot.")"
|
|
|
|
|
email_subject_additions="$email_subject_additions, reboot required"
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
${optionalString (cfg.operation == "switch") ''
|
|
|
|
|
if [ "$activate_configuration" = "yes" ] ; then
|
|
|
|
|
echo "→ Activating new configuration." | tee -a "$output_file"
|
|
|
|
|
${nixos-rebuild} switch ${toString cfg.flags} 2>&1 | tee -a "$output_file" || exit_code=$?
|
|
|
|
|
${optionalString (cfg.operation == "switch") ''
|
|
|
|
|
if [ "$activate_configuration" = "yes" ] ; then
|
|
|
|
|
echo "→ Activating new configuration." | tee -a "$output_file"
|
|
|
|
|
${nixos-rebuild} switch ${toString cfg.flags} 2>&1 | tee -a "$output_file" || exit_code=$?
|
|
|
|
|
fi
|
|
|
|
|
''}
|
|
|
|
|
fi
|
|
|
|
|
''}
|
|
|
|
|
|
|
|
|
|
upgrade_output="$(cat "$output_file")"
|
|
|
|
|
rm -f "$output_file"
|
|
|
|
|