Bring your Linux machine up from zero — one command, fully equipped.
In power engineering, a black start is the process of restoring a system from complete shutdown — no external power, no dependencies, from absolute zero.
That's exactly what this does for your dev machine.
git clone https://github.com/blackstart-labs/blackstart.git
cd blackstart
chmod +x devsetup.sh
sudo ./devsetup.sh --fullOr run directly (audit the script first):
curl -fsSL https://raw.githubusercontent.com/blackstart-labs/blackstart/main/devsetup.sh | sudo bash -s -- --minimal| Distro | Package Manager | Status |
|---|---|---|
| Ubuntu 20.04+ | apt | ✅ Fully supported |
| Debian 11+ | apt | ✅ Fully supported |
| Arch Linux | pacman + yay | ✅ Fully supported |
| Manjaro | pacman | ✅ Compatible |
| Flag | What it installs |
|---|---|
--minimal |
Core tools + languages + shell |
--full |
Everything (all categories below) |
--devops |
Core + Docker, kubectl, Helm, Terraform, AWS CLI |
--security |
Core + nmap, wireshark, hashcat, gobuster, pwndbg |
--interactive |
Prompts you for each category |
| Option | Description |
|---|---|
--dry-run |
Print all commands without executing anything |
--dotfiles <url> |
Clone and apply your personal dotfiles repo |
--help |
Show usage |
git · curl · wget · neovim · htop · btop · tmux · zsh · fzf · ripgrep · fd
| Language | Method |
|---|---|
| Node.js (LTS) | nvm |
| Bun | Official installer |
| Python 3 | System + pip + pipx + venv |
| Rust | rustup |
| Go (latest) | Official tarball |
| C / C++ | gcc, clang, gdb, valgrind |
| Java | OpenJDK + Maven + Gradle |
| .NET SDK | Microsoft feed (8.0 + 6.0 LTS) |
- zsh as default shell
- Oh-My-Zsh with plugins:
zsh-autosuggestionszsh-syntax-highlightinggit,docker,kubectl,python,node,rust,fzf,z
- Starship prompt
- Fully configured
.zshrcwith aliases, PATH setup, and editor defaults
bat (cat replacement) · eza (ls replacement) · httpie · zellij · tmux
- Docker + Compose plugin (with user group setup)
- VS Code + 15 extensions (C++, Python, Rust, Go, Docker, GitLens, Prettier, etc.)
- Git global config (name, email, editor, aliases)
- SSH key generation (ed25519, prints pubkey for GitHub)
Docker · kubectl · Helm · Terraform · AWS CLI v2 · cloudflared
nmap · wireshark · hashcat · john · gobuster · feroxbuster · sqlmap · aircrack-ng · pwndbg · socat · netcat · strace · exiftool · steghide
- Brave Browser
- Flameshot (screenshot tool)
- CopyQ (clipboard manager)
- iBus + ibus-avro for Bangla typing
- Flathub remote setup
- Optional: Spotify, VLC, OBS Studio, GIMP
# Minimal — just the essentials
sudo ./devsetup.sh --minimal
# Full workstation
sudo ./devsetup.sh --full
# DevOps machine with your dotfiles
sudo ./devsetup.sh --devops --dotfiles https://github.com/you/dotfiles
# Security / CTF rig
sudo ./devsetup.sh --security
# Preview everything without touching your system
sudo ./devsetup.sh --full --dry-run
# Let it ask you what to install
sudo ./devsetup.sh --interactivePass your dotfiles repo and blackstart will:
- Clone it to
~/.dotfiles - Run
install.sh/setup.sh/bootstrap.shif present - Symlink common files (
.zshrc,.gitconfig,.tmux.conf,nvim/, etc.)
sudo ./devsetup.sh --full --dotfiles https://github.com/you/dotfiles- Modular — each category is an isolated function
- Idempotent — safe to run multiple times; checks before installing
- Logged — full output written to
devsetup.log - Error-handled —
set -euo pipefail,trap ERR, fallback messages - Non-root safe — uses
$SUDO_USER/as_user()for user-level installs - Dry-run —
--dry-runprints every command without executing
# Apply shell changes immediately
exec zsh
# Use Docker without sudo right away
newgrp docker
# Copy your SSH key to GitHub
cat ~/.ssh/id_ed25519.pub
# Set up Bangla input
ibus-setupblackstart/
├── devsetup.sh ← the bootstrap script
├── README.md
└── LICENSE ← MIT
PRs welcome. Please:
- Test on both Ubuntu and Arch before submitting
- Keep functions modular and idempotent
- Comment any non-obvious logic
- Update the README if you add a new category