In case this helps anyone. ``--ignore-environment` is more hermetic than `--pure` and may have unexpected effects in conjunction with profile and rcfile's.
On NixOS one may have to add --keep __ETC_PROFILE_DONE or add --norc to the bash call.
nix shell --ignore-environment nixpkgs#hello --command $SHELL --norc
nix shell --ignore-environment nixpkgs#hello --keep __ETC_PROFILE_DONE
while we're at it we can simulate the behavior of nix-shell --pure with something like this. The _DONE is to retain variables related to sourcing/re-sourcing profile and rc