Does this not work?
https://nixos.org/wiki/How_to_install_nix_in_home_(on_anothe...
I've not personally tried it. From reading that document, it seems inconvenient but possible.
My understanding is that the hard-coded paths are needed to ensure compatibility of the binary caches, since store paths are often embedded in other artifacts (e.g. RPATH in binaries, shebang line in scripts). You could always run your own cache using another prefix if that's a problem.