We’ve been taking this approach at $DAYJOB too.
It is 1 of the 2 ways I know of to make a Rust project actually reproducible.
The other is essentially still flake-based, but pinning the flake to a specific nixpkgs commit, then listing the Rust tools there.
Between the 2 options, I think the former is the superior option, as the reproducibility will migrate along with the project.
Where Fenix is actually a bad choice, as with it’s rust the rpath isn’t set correctly, and external shared objects aren’t found after the build.
You might want to prefer oxalicas rust overlay instead.
To package things that require Rust nightly, RUSTC_BOOTSTRAP = true;
can sometimes be used as a hack. I’ve used this and it works. However, you might need to use it together with the oxalica overlay as shown in: Nixpkgs Reference Manual