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
Important
Do not run the main installer with sudo.
Run bash install.sh ... as your normal user. The installer calls sudo internally when system changes are required.
Running the main installer with sudo can install user dotfiles into /root instead of your real home directory.
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 internally) Installs packages, system configurations, and user dotfiles.
bash install.sh --fullSystem-Only Install (Requires sudo internally) 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 internally)
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-onlyRoot Dotfiles Install Root dotfiles are intentionally handled by a separate script.
sudo bash dotfiles/install_root.sh- 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.
- Editor Configs: Vim and Neovim configuration.
- Custom Scripts: Found in
scripts/anddotfiles/bin/, including nested script directories such as JetBrains launchers.
- 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: