I have almost the same setup, except use the vterm emacs package as my backup shell instead of alacrity - while vterm doesn't integrate with emacs as well as eshell (no redirecting into buffers/calling elisp functions), I prefer it to an external shell, as I can keep my emacs bindings in the shell and share the kill ring.