These scripts automate bootstrapping an Arch Linux system for CTF competitions and pentesting. They remain modular, idempotent, and give you control over what gets installed.
bootstrap.sh— main orchestrator; wires interactive menus to modular installers, handles logging and summaries.lib/common.sh— shared helper library for logging, package operations, menu abstraction, and summary reporting.modules/— category-specific installers:install_arch_essentials.shinstall_programming_languages.shinstall_shell_tools.shinstall_ctf_suite.sh(dispatches to submodules)install_optional_extras.shinstall_dotfiles.shinstall_zsh_plugins.shinstall_ctf_reversing.shinstall_ctf_web.shinstall_ctf_osint.shinstall_ctf_pwn.shinstall_ctf_crypto_forensics.sh
Logs are stored under logs/ with timestamped files for the main run and the summary.
- Arch Linux with
pacmanandsudoconfigured. - Ability to build AUR packages if you opt into AUR tools (Git, base-devel).
- Optional:
whiptail,dialog, orfzffor richer menus (fallback prompts are provided).
- Clone or copy this directory onto the target machine.
- Make sure scripts are executable:
chmod +x bootstrap.sh modules/*.sh lib/common.sh - Run the orchestrator:
./bootstrap.sh
- On first launch you’ll be asked which package manager to standardize on (
yay,paru, orpacman). The chosen tool is installed if needed, the system is updated automatically, and all later installs go through that manager. - Follow the numeric prompts to pick the categories and tools you want (type selections like
1 3 5or ranges such as1-3; press Enter to accept defaults, and use0orqto quit a menu). - Inspect
logs/bootstrap_<timestamp>.logandlogs/summary_<timestamp>.txtafter completion for details.
Re-running the scripts is safe: all package installs use --needed, and pipx installs are idempotent.
- Update defaults in each module if you prefer different selections to be pre-checked.
- Extend the
modules/scripts or add new ones; each entry simply sourceslib/common.shand records results. - Drop replacement configs into
dotfiles/to have them copied into place (existing files are backed up automatically). - LazyVim setup relies on
fnmto supply Node.js; adjust the helper ininstall_shell_tools.shif you prefer a different runtime manager. - For offline or repetitive setups, consider caching
/var/cache/pacman/pkgand~/.cache/yay(or your AUR helper of choice). - If you plan to import dotfiles or configure shells further, chain them from
bootstrap.shor add new modules.
Happy hacking ヽ(^o^)丿