I'm sharing a different approach to managing developer tools across systems:
Problem: Every OS has different packages and versions. Moving between systems means constant tool reinstallation.
Solution: dotbins – Download binaries once, version control them, clone anywhere
The workflow: 1. Define your tools in a YAML file 2. Run dotbins sync
to download binaries for all platforms 3. Store everything in a Git repo (with optional LFS) 4. Clone that repo on any new system
Create a ~/.dotbins.yaml
file with contents:
“`yaml platforms: linux: – amd64 – arm64 macos: – arm64
tools: # Standard tools bat: sharkdp/bat fzf: junegunn/fzf
# With shell integration bat: repo: sharkdp/bat shell_code: | alias cat="bat –plain –paging=never" alias less="bat –paging=always"
ripgrep: repo: BurntSushi/ripgrep binary_name: rg “`
After running dotbins sync
, you'll have binaries for all platforms/architectures in your ~/.dotbins
directory.
“`bash
On your main machine
cd ~/.dotbins git init && git lfs install # LFS recommended for binaries git lfs track "/bin/" git add . && git commit -m "Initial commit" git push to your repo
On any new system
git clone https://github.com/username/.dotbins ~/.dotbins source ~/.dotbins/shell/bash.sh # Or zsh/fish/etc. “`
This approach has been a game-changer for me. I clone my dotfiles repo and my .dotbins
repo, and I'm instantly productive on any system.
- My personal dotbins collection: https://github.com/basnijholt/.dotbins
- Project: https://github.com/basnijholt/dotbins
Has anyone else tried this Git-based approach to tool distribution?
submitted by /u/basnijholt
[comments]
Source link