So, some times ago I had this question https://feddit.it/post/22496010 about how to manage my system configuration, storing it on a repository or something.
Many people recommended using ansible to manage the system as a whole, but my system was already up and running, what I wanted instead was something to move around files while fixing up their permissions, so I build a python script for that.
The script grew more refined as time went on, and so now I’m publishing it so anyone can use it.
p.s.: this script is purely python and has no external dependencies!



Say you want to store
/etc/ufw/sysctl.confwhich is owned byroot:admand has permission 644 in your repo, but also/etc/ntfy/server.ymlwhich is owned byntfy:ntfywith permissions 664. How do you keep track of this with gnu stow?Ah now I understand the purpose. I only use it for my (personal) dotfiles, which as a term is ambiguous at best, but in my case I mean config files. That was how I essentially misread your title. Obviously all those files are owned by my user, and most live in ~/.config or similar locations beneath my home directory. Things like application preferences, basically.
Obviously your tool also works for this, but I now understand it’s more meant for system wide config files.
Yeah, it’s cool, people are mostly looking for something like your usecase. I got suggested stow or stow-like tools a lot when exploring this. And when they understood what I wanted, they just suggested ansible… Which would work when starting from scratch, but wasn’t right for me. I made copicat mostly because I am actually using it, and then decided to make it public because really I didn’t find anything like it.
I would like to add that I did look at the GitHub before commenting. And I still didn’t get it. Matthew with just explain what it does, but also why is different from the common tools/suggestions that seem similar. Maybe it’s more about highlighting the differences (or the additional capabilities).