I use Stow, it is simple and only does a few things, but for a lot of users like me it is more than enough:
1. Probably it will not receive more features any time soon.
2. You can have several configurations and mix them, also it makes very easy to adopt changes from the current system and/or rollback changes.
3. No, it is not programmable, but you can have several folder for different systems and configurations. I for example have a folder called unix for all *nix systems, other called x11 for x11 programs, darwin for macOS, etc. You could do the same with roles.
If you want really fine grained control over machine/user/role, it is not enough, and it does not take into account package managing at all.
I use a mix of Stow/Ansible for Desktops and HashiCorp/Ansible for the `cattle`. Nix is more powerful than my setting, but I still need to evaluate if it is flexible enough for the orgs I work with.
1. Probably it will not receive more features any time soon.
2. You can have several configurations and mix them, also it makes very easy to adopt changes from the current system and/or rollback changes.
3. No, it is not programmable, but you can have several folder for different systems and configurations. I for example have a folder called unix for all *nix systems, other called x11 for x11 programs, darwin for macOS, etc. You could do the same with roles.
If you want really fine grained control over machine/user/role, it is not enough, and it does not take into account package managing at all.
I use a mix of Stow/Ansible for Desktops and HashiCorp/Ansible for the `cattle`. Nix is more powerful than my setting, but I still need to evaluate if it is flexible enough for the orgs I work with.