Throughout my dev career, I changed jobs a few times, changed Macs many times and realized I was spending way too much time on the same setup tasks. Over time, this became a hassle because some apps where dropped, forgotten or simply misconfigured. I built a tool to handle the repetitive stuff automatically, track what you install and easily port apps and configs across machines.
https://github.com/rocajuanma/anvil
Problem: Every new machine(buying, new job, refresh, etc) means installing the same apps, finding your config files, and dealing with small issues that eat up time. Not the end of the world, but annoying when you just want to start working.
What I built: Anvil handles the routine parts with a single command: `anvil install` and let's you decide how to group your apps for easy installation. It also allows you to track configs using a remote repo.
Anvil uses Homebrew and GitHub behind the scenes, just coordinates everything so you don't have to remember what to install or where your configs are stored.
Features: - Install groups of related apps with one command, you declare your organization - Sync settings across machines using GitHub - Basic troubleshooting that fixes common issues - Works with any Mac app available through Homebrew
Results: What used to take half a day now takes about 20 minutes. More importantly, all my machines(personal and work) stay in sync - same tools, same settings, no hunting for that one config file I need.
Nothing revolutionary, just removes the friction from something we all have to do occasionally. Made it open source in case others find it useful. Give it a try if this interests you or can help you. This was built for MacOS developers, but anyone using a Mac could benefit for the install feature!
Thanks in advance!
I just wish there were a Linux option. Like in the example config doc, I have a dotfiles repo in Github. It includes some basic settings for vim and tmux that I like to install on servers such as jump hosts or EC2 instances when running long-running development tasks. I have a file `linux-install.sh` which will install dependencies (e.g. newer version of vim, silversearcher, ripgrep, tmux) and then another `config-install.sh` that will sync config files for both Mac and Linux (tmux config, zsh config, install vim plugins, ...). A declarative syntax would be really nice for that usecase, though not sure how common that is.
You've actually touch on two areas I'm working on: 1. Extending Linux support - This is built on top of homebrew, which already partially supports linux. Perhaps some of the tools your looking for already work but its in my TODO to extend this a bit more. 2. config import and examples - I just added a new feature to import configs groups more easily, and push this release just now, check it out and it might give you some ideas and could be a way for you to start building those groups for the EC2 instances, etc.
Let me know! thanks again
Something I'm not able to do nicely is to sync browser profiles, I end up doing all the setup and login step by step, it takes me an hour or so