Problem: When using multiple substitute servers, if one of the server is temporarily unreachable, `guix substitute --substitute' will throw an exception. Example (while bayfront server was down, attempting to build a package only available locally (emacs-dvc)): --8<---------------cut here---------------start------------->8--- guix package -i emacs-dvc ;;; note: source file /home/maxim/.config/guix/latest/gnu/packages/emacs.scm ;;; newer than compiled /home/maxim/.config/guix/latest/gnu/packages/emacs.go ;;; note: source file /home/maxim/.config/guix/latest/gnu/packages/emacs.scm ;;; newer than compiled /gnu/store/nqy9m6hhnkkfwr5wyq5bac96v9s9hc9i-guix-0.12.0-9.25a4/lib/guile/2.0/site-ccache/gnu/packages/emacs.go ;;; note: source file /home/maxim/.config/guix/latest/gnu/packages/emacs.scm ;;; newer than compiled /run/current-system/profile/lib/guile/2.0/site-ccache/gnu/packages/emacs.go ;;; note: source file /home/maxim/.config/guix/latest/gnu/packages/emacs.scm ;;; newer than compiled /home/maxim/.cache/guile/ccache/2.0-LE-8-2.0/home/maxim/src/guix/gnu/packages/emacs.scm.go The following package will be installed: emacs-dvc trunk-1.591 /gnu/store/sraxmg5qz9i4338s4ks7asgy4v68dgqs-emacs-dvc-trunk-1.591 > substitute: updating list of substitutes from 'https://mirror.hydra.gnu.org'... 100.0% substitute: updating list of substitutes from 'https://mirror.hydra.gnu.org'... 100.0% Downloading https://bayfront.guixsd.org/nar/gzip/6h7ym07plwxfn4zq53ld8zfpbx3a09al-at-spi2-core-2.22.0 (1.1MiB installed)... guix substitute: error: connect: No route to host killing process 13896 killing process 13896: No such process --8<---------------cut here---------------end--------------->8--- Expected: Since multiple substitute servers are being used, rather than bombing out on the first unavailable one, `guix substitute --substitute' (or any other command implicated with substitute servers) should simply warn about it before attempting the next one. Bonus point: `guix substitute --query' should also print a warning message that substitute server X couldn't be reached (it doesn't print anything about that right now, just skips to the next one).