A personal, automated setup and teardown toolkit for configuring a development environment on Ubuntu or Debian systems.
This project installs and configures essential tools and applications such as Oh My Zsh, NVM, Docker, Zen Browser, and more, using modular Bash scripts.

- Automated Installation: Installs development tools and apps with a single command.
- Modular Scripts: Each app or tool has its own script in
apps/
. - Uninstall Support: Cleanly remove installed applications.
- User-Friendly Logging: Informative, emoji-enhanced log output.
- Safe Defaults: Prompts for confirmation before making changes.
- Easily Extensible: Add or remove apps by editing the
apps/
directory.
.
├── apps/ # App-specific install scripts
│ ├── apps.json # List of apps to install
│ ├── git-setup.sh
│ ├── bun.sh
│ ├── nvm.sh
│ ├── omz.sh
│ ├── docker.sh
│ ├── zen-browser.sh
│ └── ... # Add your own scripts here
├── init.sh # System update & dependency install
├── install.sh # Main install entrypoint
├── intro.sh # Welcome and info prompt
├── LICENSE
├── README.md
├── uninstall.sh # Uninstall selected applications
├── utils.sh # Utility functions
└── ...
- Ubuntu or Debian-based Linux system
- Root privileges (use
sudo
) - Internet connection
-
Review the Scripts
⚠️ This toolkit is tailored to the author's preferences.
Review and edit scripts as needed before running. -
Run the Installer
sudo bash install.sh
- You will see an introduction and be prompted to confirm.
- The script will run
init.sh
(system update), then install apps via scripts inapps/
.
To remove installed applications:
sudo bash uninstall.sh
You will be prompted before any removal.
Check the apps/
directory for individual scripts.
All scripts use the logging functions in utils.sh
:
log_info
,log_success
,log_warning
,log_error
These provide clear, color-coded, and emoji-enhanced output for better readability.
- Add/Remove Apps:
Place your install/uninstall scripts in theapps/
directory. Each script should be executable and follow the existing conventions. - Control Uninstallation:
Edit theAPPS
array inuninstall.sh
to control what gets uninstalled. - Register your app:
Add your app toapps/apps.json
to include it in the installation process.
Contributions are welcome!
Feel free to submit issues or pull requests for improvements, bug fixes, or new app scripts.
MIT License. See LICENSE.
- Make installation script dynamic
- Add lazygit support
- Add lazydocker support
- Add dependency management for apps
E.g., check if Docker is installed before installing lazydocker - Accumulate logs to show at the end of the installation process
E.g., docker needs a gnome-session restart to work properly