Even when a substitute for a derivation is available, sometimes the substitution attempt will fail. This can happen for a variety of reasons: the substitute server might be offline, the substitute may recently have been deleted, the connection might have been interrupted, etc.
When substitutes are enabled and a substitute for a derivation is
available, but the substitution attempt fails, Guix will attempt to
build the derivation locally depending on whether or not
--fallback was given (see common build
--fallback). Specifically, if
omitted, then no local build will be performed, and the derivation is
considered to have failed. However, if
--fallback was given,
then Guix will attempt to build the derivation locally, and the success
or failure of the derivation depends on the success or failure of the
local build. Note that when substitutes are disabled or no substitute
is available for the derivation in question, a local build will
always be performed, regardless of whether or not
--fallback was given.
To get an idea of how many substitutes are available right now, you can
try running the
guix weather command (see Invoking guix weather). This command provides statistics on the substitutes provided
by a server.