nixos/activation: Identifies the snippet that failed

This allows a developer to better identify in which snippet the
failure happened. Furthermore, users seeking help will have more
information available about the failure.

Changed files
+6 -1
nixos
modules
system
+6 -1
nixos/modules/system/activation/activation-script.nix
···
addAttributeName = mapAttrs (a: v: v // {
text = ''
#### Activation script snippet ${a}:
+
_localstatus=0
${v.text}
+
+
if (( _localstatus > 0 )); then
+
printf "Activation script snippet '%s' failed (%s)\n" "${a}" "$_localstatus"
+
fi
'';
});
···
done
_status=0
-
trap "_status=1" ERR
+
trap "_status=1 _localstatus=\$?" ERR
# Ensure a consistent umask.
umask 0022