aconfmgr is a configuration manager for Arch Linux.


You can read the details of what aconfmgr is and what it does in the README; instead, here I’m going to write my personal reasons for creating aconfmgr.

Setting up my Arch Linux system (to how I liked it) was a non-trivial effort. As I was going to switch my laptop to Arch soon as well (it was running Kubuntu at the time), I did not look forward to redoing all that work again, or any time I’d need to set up a new machine. I also did not look forward to having to install and configure the same packages on other machines after doing so on one; and I especially did not look forward to having to set up the system from scratch all over again should I mess something up (and not even knowing what broke it).

So, I decided to spend a month (yeah, how hard can writing a simple pacman wrapper be?) on writing aconfmgr instead.

Not only does it solve the above challenges, but importantly, it tracks changes to the system. So, the situation where you realize (or don’t!) that something is broken because you edited a file in /etc a few months ago is avoided completely: such changes would need to end up in your aconfmgr configuration, and presumably versioned and documented.

aconfmgr is written completely in bash (not counting the third-party packages it depends on). There is a lot I can say about this decision (and I was on the fence about it for a long time), but for now I’ll just say that one deciding factor was that - if there is a single one language that a system administrator would be most likely to know, it is going to be bash.

At the time of writing, aconfmgr is slowly creeping towards 1.0, which will be distinguished by more complete test coverage (due to integration tests, as opposed to just the current unit / mock tests), and some code polishing that I’ll be more at ease doing with better test coverage.

Note: this article is back-dated, and was originally written on 2018-11-05.