Managing a fleet of NixOS desktop machines

If you use flakes there is already a pull mode built into NixOS.

https://search.nixos.org/options?channel=24.05&show=system.autoUpgrade.flake&from=0&size=50&sort=relevance&type=packages&query=autoUpgrade

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.