This document explains the comprehensive shell script designed to enhance the development environment for programmers using Arch Linux. The script automates the setup of a productive programming workspace with various tools, configurations, and utilities.
The "DevBoost" script is a comprehensive tool that transforms a basic Arch Linux installation into a fully-equipped development environment. It installs and configures essential programming tools, sets up specialized environments for multiple programming languages, customizes the terminal experience, and creates a productive workspace structure.
The script begins by updating the Arch Linux system using pacman -Syu to ensure all packages are current. It then installs a wide range of essential development tools including:
- Base build tools: cmake, ninja, meson, pkg-config
- Editors and IDEs: vim, neovim, emacs, Visual Studio Code, geany
- Version control systems: git, git-lfs, mercurial, subversion
- Terminal utilities: tmux, screen, htop, glances, tree, fzf, ripgrep
- Network tools: curl, wget, httpie, nmap, wireshark-qt
- Documentation tools: man-db, man-pages, tldr, cheat
The script also installs "yay" (an AUR helper) if it's not already present, allowing access to the Arch User Repository for additional packages.
The script sets up comprehensive environments for multiple programming languages, installing all necessary compilers, interpreters, package managers, and development tools:
- Python: python, pip, virtualenv, poetry, pyenv, jupyter
- Node.js: nodejs, npm, yarn, nvm, deno, typescript
- Go: go, delve, gopls
- Rust: rust, rustup, cargo, rust-analyzer
- Java: JDK, maven, gradle, IntelliJ IDEA
- C/C++: gcc, clang, llvm, gdb, valgrind
- Ruby: ruby, irb, rubygems, rbenv
- PHP: php, composer, xdebug, phpunit
- Lua: lua, luajit, luarocks
- Databases: sqlite, mariadb, postgresql, redis, mongodb
The script installs Docker and Docker Compose, and sets up the current user to use Docker without sudo. It also installs Kubernetes tools like kubectl, minikube, k9s, helm, and kustomize for container orchestration.
One of the most valuable aspects of the script is the terminal environment configuration:
- Zsh with Oh My Zsh: Replaces the default shell with Zsh and installs Oh My Zsh for additional functionality
- Powerlevel10k theme: Installs an advanced theme that provides informative prompts
- Custom plugins: Adds syntax highlighting, autosuggestions, and auto-completions
- Extensive aliases and functions: Creates dozens of helpful shortcuts for common operations
The custom .zshrc file includes:
- Navigation shortcuts: Aliasing
..tocd .., etc. - Git shortcuts: Aliases for common git commands
- Docker shortcuts: Easier container management
- Kubernetes aliases: Simplified cluster management
- Python virtual environment handling: Automatic activation of virtual environments
- Advanced functions: For creating projects, extracting archives, finding large files, etc.
- Custom daily summary: Shows system status, recent projects, and todo items on terminal startup
The script sets up Git with sensible defaults and useful aliases, making version control more efficient. It creates a global .gitignore_global file with comprehensive patterns for different languages and environments, preventing unnecessary files from being tracked.
For developers who use Vim or Neovim, the script creates well-structured configuration files with:
- Plugin management: Sets up vim-plug and installs essential plugins
- Theme and styling: Configures attractive color schemes and status bars
- Code completion: Installs and configures CoC (Conquer of Completion)
- File navigation: Sets up NERDTree, fzf, and other navigation tools
- Git integration: Adds fugitive and gitgutter plugins
- Syntax highlighting and linting: Configures ALE and language-specific linters
- Custom keybindings: Creates intuitive shortcuts for common operations
For Neovim specifically, it adds LSP (Language Server Protocol) configuration for intelligent code analysis and autocompletion.
For terminal multiplexing, the script configures Tmux with:
- Improved key bindings: More intuitive window and pane management
- Mouse support: Enables clickable panes and windows
- Visual enhancements: Status bar customization and color themes
- Plugin support: Sets up TPM (Tmux Plugin Manager) with useful plugins
- Session management: Improves session handling and persistence
The script creates an organized directory structure in ~/Development with specialized folders for different purposes:
- Projects: For main development projects
- Experiments: For code experiments and prototypes
- GitHub: For cloned repositories
- Workspace: For general development
- Scripts: For utility scripts
- Tools: For development tools
- Libraries: For reusable code
- Docker: For Docker-related files
- Documentation: For development notes
It also creates a README.md in this directory explaining the structure and usage.
If Visual Studio Code is installed, the script:
- Installs recommended extensions: For various languages, Git integration, Docker support, etc.
- Configures editor settings: Sets up optimal defaults for programming
- Sets up keybindings: Creates useful keyboard shortcuts
- Configures language-specific settings: Optimizes for Python, JavaScript, etc.
The script installs specialized programming fonts that enhance code readability:
- JetBrains Mono: A font designed specifically for programming
- Fira Code: A font with programming ligatures
- Nerd Fonts: Fonts with special icons for terminals and file explorers
The script creates useful utility scripts in the ~/Development/Scripts directory:
- update-all-deps.sh: Updates dependencies across all projects
- git-batch.sh: Performs Git operations on multiple repositories at once
- bootstrap-project.sh: Creates new projects with proper structure based on language/framework
These scripts help automate routine development tasks and maintain consistency across projects.
This comprehensive development environment provides numerous benefits:
- Productivity: Saves time with specialized tools and shortcuts
- Consistency: Ensures a uniform development experience
- Best practices: Implements recommended configurations
- Cross-language support: Prepares the environment for multiple programming languages
- Automation: Reduces manual setup and maintenance
- Customization: Allows for personal preferences while providing solid defaults
The script is designed to be run on a fresh or existing Arch Linux installation. It will install all necessary tools and create configurations while prompting the user for critical decisions. After execution, the user will have access to a fully-equipped development environment with all the tools necessary for professional software development.
To get the most out of the configured environment, the user should:
- Familiarize themselves with the created aliases and functions by reviewing the
.zshrcfile - Explore the VSCode extensions that were installed
- Review the created directory structure in
~/Development - Try the utility scripts in
~/Development/Scripts
The environment can be further customized by:
- Adding personal aliases and functions to
~/.zshrc.local(which is sourced if it exists) - Modifying the Vim/Neovim configurations to suit personal preferences
- Installing additional VSCode extensions as needed
- Adding project-specific configurations in the Development directory
To keep the development environment up-to-date, the script includes an update-dev-tools function that can be run periodically to update:
- System packages via pacman
- npm global packages
- pip packages
- Rustup toolchains
- Go packages
- Ruby gems
This ensures that the development tools remain current and secure.