So.. that being said, you can setup home-manager to install and configure things from git. Using flakes makes it more reproducible.
These means that you can just git clone and 'home-manager switch' and setup everything from scratch.
I do this on both mac and linux machines (ubuntu 20) and quite often use the same nix expressions.
I'd highly recommend that workflow, since it's git, you can do anything you want. Go back a month via git on a branch and make that machine exist again.
It really makes managing software fearless