Just recording for posterity the solution to an incredibly stupid problem.
When I switched my users.users.<name>.shell =
to the extremely nice fish shell, I neglected to add programs.fish.enable = true;
in my configuration.nix.
This meant a few crucial environment variables were not set in my login shell (even though most were there!), one of which being a few entries in $GIO_EXTRA_MODULES relating to GVFS (mentioned here). This manifested in the file manager refusing to open the trash ("Sorry, could not display all the contents of trash:/// : Operation not supported
"), mount sftp, automount USB drives, or show file metadata.
So don’t miss this step! Although it really should warn you.
Though the effect of pure functional builds in the maddening month of troubleshooting I went through is knowing reinstalling will have absolutely no effect, the problem is in your configuration.nix.