Automated app installer for personal workstation setup using Python (with Homebrew or Miniforge/Mamba as package manager).
- Batch install of CLI/dev tools via Python (using Homebrew or Miniforge/Mamba as package manager)
- Auto-detect and install Git on major Linux distributions
- Install by list:
minimal,optional, orfull - Smart package manager selection based on environment
workstation-bootstrap/
├── README.md
├── install.py # Entry point
├── app_lists # App lists (*.txt)
│ ├── minimal.txt # Base set: vim, fzf, yazi, ...
│ ├── optional.txt # Extras: tmux, lazygit, neovim
│ └── commands.json # Command mappings
├── core # Environment, package managers, registry
│ ├── app.py
│ ├── context.py
│ └── manager.py
└── utils # Git check/installer
├── check_git.py
└── check_git.sh
git clone https://github.com/HongmingLiang/workstation-bootstrap.git
cd workstation-bootstrap
# Auto mode + minimal set
python3 install.py --mode auto --app-list minimal
# Install everything from all list files
python3 install.py --mode auto --app-list fullauto: choosesbrewif sudo is available, otherwisemambabrew: uses Homebrew if present; installs it if missingmamba: installs Miniforge if missing, then uses an environment namedapps
--mode {auto,brew,miniforge}: defaultauto--app-list {minimal,optional,full}: required;fullinstalls all lists--force-reinstall: reinstall even if command already exists in PATH--custom-bin-path <path>: custom Mamba binary path when usingminiforge
# Auto mode + minimal set
python3 install.py --mode auto --app-list minimal
# Install everything from all list files
python3 install.py --mode auto --app-list full
# Force reinstall optional set via miniforge
python3 install.py --mode miniforge --app-list optional --force-reinstall
# Use custom Mamba path with miniforge mode
python3 install.py --mode miniforge --app-list minimal --custom-bin-path /custom/mamba- Ensures Git is available (
utils/check_git.pysupports Debian/Fedora/Arch/Alpine/SUSE) - Detects environment (
core/context.py) to decide package manager - Loads apps from
app_lists/*.txt(ignores blank lines and comments) - Skips already installed apps unless
--force-reinstallis used - Package managers:
- Homebrew:
brew install - Miniforge (Mamba): installs Miniforge if missing, creates
appsenv, installs there, and tries to symlink binaries into~/.local/bin
- Homebrew:
To add more apps:
- Append package names to the desired
*.txtlist inapp_lists/ - Rerun the installer:
python3 install.py --mode auto --app-list <list-name>
| Issue | Fix |
|---|---|
| Git not auto-installed | Install via your distro's package manager, then rerun the app installer |
| Miniforge install fails | Check network and rerun; verify mamba binary path if using --custom-bin-path |