If you use flakes there is already a pull mode built into NixOS.
As for the organisation of the files.
The profiles can just be a bunch of files in which you enable the related configuration.
Here you can see that I assign each machine a specific home manager profiles: nixos/flake.nix at abce15394c13dc46aacea1f3113e70e3a034ee35 - nixos - Gitea: Git with a cup of tea
That comes from here: nixos/profiles at master - nixos - Gitea: Git with a cup of tea
For the NixOS profiles I have done it a bit differently and written my own module to enable it with a flag. I can’t remember why I did differently with home-manager: nixos/default.nix at abce15394c13dc46aacea1f3113e70e3a034ee35 - nixos - Gitea: Git with a cup of tea
Which then gets used here: nixos/default.nix at abce15394c13dc46aacea1f3113e70e3a034ee35 - nixos - Gitea: Git with a cup of tea
None of my config is done with a special framework. One could certainly streamline it a bit but Nix is already quite capable for many tasks.