I work in an organization that maintains all software in shared repositories accessible via NFS. In order to access said software, we have a system for defining a runtime environment based on a set of software versions configured particular task / role. A user accesses executables via a wrapper, which invokes an intermediate application to look up the runtime dependencies associated with a particular task / role, configure the environment appropriately, and then invoke the wrapped application in said initialized environment.
We do not allow individual developers to install software to their home directories. In fact, direct access to the internet is restricted to build machines and the like.
I don't really see how to install rust and cargo in this scenario. Especially since I probably need to locate the various executables from ./cargo/bin in a different location than the rest of the .cargo contents. I have seen mention of CARGO_HOME and RUSTUP_HOME, but they aren't granular enough for my needs ( or so it would seem )
During the initial install, set CARGO_HOME and RUSTUP_HOME to somewhere in your NFS filesystem. On user machines, add whatever you used for $CARGO_HOME/bin to the user's PATH and also set RUSTUP_HOME. Don't set CARGO_HOME, as that's where cargo caches lots of things at build time. You probably want to set CARGO_HOME again in the future if you use rustup to install any updates.
Alternatively, you can install without rustup, see Redirecting...
The binaries that rustup places in CARGO_HOME are wrappers that allow the user to specify the toolchain (like cargo +1.32.0 run or cargo +nightly build). These wrappers use RUSTUP_HOME. I think with your custom tooling mechanism you should avoid using these wrappers and you can directly call out to the binaries in $RUSTUP_HOME/toolchains/*/bin/.