Why is `userActivationScripts` generally frowned upon? And what to use instead

Good point. I will incorporate that thought into the structure of my dotfile repo, thanks!

My main motivation to setup my user environment using the system configuration stems from the desire to be able to perform an unattended installation of nixos and have it install to the same state as it would be on any other machine of the same hardware.
I have this process mostly down, to the point where I can plug a usb stick into any supported hardware, have it boot from it and come back to a working desktop environment some time later.

The only thing that’s missing at the moment is everything specific to the individual user.
Since I will be the only one using these systems, there is probably no point to go too overboard with this (i.e. I will not setup an ldap server for just a single person), but I still like to entertain the idea of how much this could scale.

I have posted another thread earlier, specifically about setting up homemanager declaratively and without user interaction and I have received this great response: Automating home manager setup - #6 by fricklerhandwerk

But using a systemd service that runs on every reboot seemed a little overkill to me since the location of the repo is only dependent on the system config (in this case).
I had heard of userActivationScripts before, but I thought that it only ran on a rebuild, which was luckily cleared up by the answer by NobbZ above.