A reproducible Linux workstation bootstrap for Pop!_OS, Ubuntu, and Debian-based systems.
It turns a fresh Linux machine into a C/C++ and embedded Linux development environment with debugging, crash analysis and system diagnostics tools.
This repository is primarily a personal engineering environment, but it documents the tools and workflows I use for Linux development, crash investigation and diagnostics.
It supports my work in:
- Linux developer training
- C/C++ debugging training
- embedded Linux support
- reproducible development environments
- diagnostics workflow setup
See COMMERCIAL.md for more details.
- Pop!_OS 22.04+
- Ubuntu & Debian-based Linux systems
git clone https://github.com/avainfo/linux_config ~/.dotfiles
cd ~/.dotfilesTip
If you are installing on an existing machine, it is highly recommended to run a dry-run first to preview changes without modifying anything.
Dry-Runs (Safe Previews)
bash install.sh --full --dry-run
bash install.sh --user-only --dry-runFull Workstation Install (Requires sudo) Installs packages, system configurations, and user dotfiles.
bash install.sh --fullSystem-Only Install (Requires sudo) Only installs apt packages and system configurations.
bash install.sh --system-onlyFull Install without System Configs Installs packages and dotfiles, but leaves system files (like journald and sysctl) alone.
bash install.sh --full --no-systemFull Install + Docker (Requires sudo)
bash install.sh --full --dockerUser-Only Install (No sudo required) Only links dotfiles and user scripts to your home directory. Safe for shared servers.
bash install.sh --user-only- Zsh & Oh My Zsh: The user shell profile automatically downloads Oh My Zsh, Powerlevel10k prompt, and plugins (
autosuggestions,syntax-highlighting) if they are missing. Note:chshis not run automatically. - Development Tools: C/C++ compilers, CMake, Ninja, GDB, LLDB, Bear, Cppcheck.
- Diagnostics Tools: Valgrind, strace, ltrace, systemd-coredump, stress-ng, perf.
- Desktop Utilities: Kitty terminal, fonts, clipboard tools.
- Custom Scripts: Found in
scripts/, includinganalyze-core,debug-service, andcollect-diagnostics.
- Safe Upgrades: The dotfiles installer will interactively prompt you if a local config file conflicts with the repository. It uses
cmpanddiffto show you exactly what changed. - Drop-in Configs: System configurations (like
coredump.confandjournald.conf) are safely placed in drop-in directories (*.conf.d/) rather than overwriting main OS files. - Backups: If you choose to replace an existing config, a backup is safely stored in
~/.config/ava/backups/.
Check the docs/ folder for more details: