Custom shells that are more than "nix shell" but less than "nix develop"

I’d like to define some custom environments for my users, in Nix. Currently I use mkDerivation and have them nix develop it. This is working, but it results in a very cluttered environment, with all kinds of variables set related to phases, input lists, etc— basically it’s definitely a build-a-specific-package environment and I’d like to have more control over it than I seem to.

It looks like nix shell may be a closer solution, as it only sets the PATH. But I need to set a few other variables, and it doesn’t seem like postHook, setupHook, or shellHook get called when using nix shell.

I could just launch the shell myself with a script invoked from nix run, or even just build the script with nix build and ask users to manually source it afterward in their shells. But I’d like to be able to use something a bit more built-in than that if it exists.

Does it?