This repository contains a modular bootstrap system for setting up a new Arch Linux installation with my preferred configurations and tools. The script architecture is divided into individual components for better maintainability and flexibility.
Before running this or any bootstrap script, you should:
- Read and understand the scripts: Take time to review all scripts in the
scripts/
directory to understand what changes they will make to your system - Verify the source: Ensure you trust the source of all scripts
- Audit the packages: Review the list of packages that will be installed in
core_packages.sh
andaur_setup.sh
- Backup your data: While these scripts shouldn't affect existing data, it's always good practice to backup before major system changes
dotfiles/
├── bootstrap.sh # Main orchestration script
└── scripts/
├── utils.sh # Utility functions and common variables
├── system_update.sh # System update functionality
├── git_config.sh # Git configuration
├── core_packages.sh # Core package installation
├── dotfiles.sh # Dotfiles management
├── rust_setup.sh # Rust installation and configuration
├── node_setup.sh # Node.js and NVM setup
├── docker_setup.sh # Docker configuration
├── aur_setup.sh # AUR helper and AUR package installation
└── shell_setup.sh # Shell configuration
- Orchestrates the execution of all other scripts
- Maintains execution order
- Provides timing information
- Handles errors and script validation
- Contains common utility functions
- Defines color variables for output
- Provides package installation helpers
- Updates the system packages using pacman
- Sets the default git branch to master
- Configures basic git settings
Installs core packages via pacman:
- dbeaver
- discord
- docker
- docker-compose
- flameshot
- gnome-disk-utility
- godot
- go
- lazygit
- libreoffice-still
- neovim
- obsidian
- rustup
- steam
- stow
- Clones this repository
- Uses GNU Stow to manage dotfiles
- Handles backup of existing configurations
- Currently manages:
- nvim
- qtile
- Installs Rust stable toolchain
- Configures Rust environment
- Installs NVM (Node Version Manager)
- Installs latest Node.js
- Configures Node.js environment
- Configures Docker permissions
- Sets up Docker service
- Adds user to Docker group
Installs and configures AUR helper (paru) and AUR packages:
- brother-hll2315dw
- doppler-cli-bin
- google-chrome
- railwayapp-cli
- slack-desktop
- visual-studio-code-bin
- yaak-bin
- zen-browser-avx2-bin
- Configures zsh as default shell
- Sets up PATH and environment variables
Before running these scripts, ensure you have:
- A fresh Arch Linux installation
- An internet connection
- Sudo privileges
- Basic understanding of Arch Linux and shell scripts
- Clone the Repository
git clone https://github.com/vinisadev/dotfiles.git
cd dotfiles
2 Make Scripts Executable
chmod x bootstrap.sh
chmod x scripts/*.sh
- Review the Scripts (IMPORTANT)
# Review bootstrap script
less bootstrap.sh
# Review individual scripts
less scripts/*.sh
- Run the Main Script
./bootstrap.sh
You can run individual scripts if you only need specific functionality:
# First source the utilities
source ./scripts/utils.sh
# Then run any individual script
./scripts/system_update.sh
./scripts/docker_setup.sh
# etc.
To customize these scripts for your own use:
-
Fork this repository
-
Modify Package Lists
- Edit
scripts/core_packages.sh
for pacman packages - Edit
scripts/aur_setup.sh
for AUR packages
- Edit
-
Update Dotfiles Configuration
- Edit
scripts/dotfiles.sh
to point to your dotfiles repository - Modify the
STOW_DIRS
array to match your dotfiles structure
- Edit
-
Adjust Script Order
- Edit the
SCRIPTS
array inbootstrap.sh
to change execution order
- Edit the
For the dotfiles management to work correctly, your dotfiles repository should follow this structure:
dotfiles/
├── nvim/
│ └── .config/
│ └── nvim/
│ └── init.vim
└── other_configs/
The script includes timing information and will display the total execution time upon completion. The duration can vary based on:
- Your internet connection speed
- System specifications
- Number of packages being installed
- AUR package compilation time
Common issues and solutions:
-
Scripts Not Found
- Ensure you're running
bootstrap.sh
from the bootstrap directory - Verify all scripts are executable
- Check that the directory structure matches the expected layout
- Ensure you're running
-
Stow Conflicts
- Existing configurations will be automatically backed up
- Check the backup directory if you need to restore previous configs
-
Permission Issues
- Ensure you have sudo privileges
- Check that all scripts are executable
- Run
chmod x bootstrap.sh scripts/*.sh
if needed
- Fork this repository
- Create a feature branch
- Submit a Pull Request with your improvements
This project is open source and available under the MIT License.
If you discover any security-related issues, please email [email protected] instead of using the issue tracker.
- These scripts are specifically designed for Arch Linux
- Some manual configuration may still be required after running the scripts
- Always check the scripts for updates before running them on a new system
- Consider creating a backup or snapshot before running any scripts