aa aaa qqqq An automated setup system for configuring a complete development environment on Linux systems. aaaa aaaa
This automation script will install and configure:
- Essential system utilities (curl, wget, git, vim, htop, tree, etc.)
- Build tools and development dependencies
- System monitoring tools
- Java 21 (OpenJDK with proper alternatives configuration)
- Node.js LTS (via NodeSource repository)
- Python 3.12 (via deadsnakes PPA with pip and venv)
- Flameshot (screenshot tool)
- VLC media player
- Neofetch (system information)
- Obsidian (note-taking)
- Discord (communication)
- IntelliJ IDEA Ultimate (IDE)
- DataGrip (database tool)
- Redis Insight (Redis GUI)
- Docker CE with Docker Compose
- Proper user permissions and service configuration
- Brave Browser (privacy-focused browser)
- Operating System: Ubuntu/Debian-based Linux distributions
- User Privileges: sudo access required
- Internet Connection: Required for downloading packages and repositories
# Clone the repository
git clone <your-repo-url> ~/.dotfiles
cd ~/.dotfiles
# Make the installer executable
chmod +x install.sh
# Run the automated setup
./install.shYou can also run individual setup scripts:
# Core system packages
./scripts/setup_linux.sh
# Programming environments
./scripts/setup_environment.sh
# Snap packages
./scripts/setup_snap.sh
# Docker
./scripts/application/setup_docker.sh
# Brave browser
./scripts/application/setup_brave.shmy-dotfiles/
├── install.sh # Main installation script
├── scripts/
│ ├── setup_linux.sh # Core system packages
│ ├── setup_environment.sh # Programming languages
│ ├── setup_snap.sh # Snap packages
│ ├── apt_packages.txt # APT packages list
│ ├── snap_packages.txt # Snap packages list
│ └── application/
│ ├── setup_docker.sh # Docker installation
│ └── setup_brave.sh # Brave browser installation
└── README.md # This file
- Strict error handling with
set -euo pipefail - Comprehensive logging with colored output
- Individual component failure handling
- Pre-installation checks for existing software
- Colored terminal output for better readability
- Progress indicators and status messages
- Clear success/failure reporting
- Installation summaries
- Detects already installed software
- Version checking for programming languages
- Automatic service configuration (Docker, snap)
- User permission setup (Docker group)
- Organized package lists with comments
- Support for package options (snap classic mode)
- Skips empty lines and comments in package files
- Batch installation with error tracking
After installation, verify your setup:
# Check programming languages
java -version
node -v
python3 --version
# Check applications
docker --version
brave-browser --version
snap list
# Check services
systemctl status docker
systemctl status snapdEdit scripts/apt_packages.txt:
# Add your packages here
package-name
another-package
Edit scripts/snap_packages.txt:
# Add snap packages here
package-name
package-with-options --classic
- Create your script in the appropriate directory
- Make it executable:
chmod +x your-script.sh - Add it to the main
install.shflow
- You may need to log out and back in for Docker group permissions
- Test Docker:
docker run hello-world
- Snap binaries are added to PATH in
~/.bashrc - Restart your terminal or run
source ~/.bashrc
- Java alternatives are configured automatically
- Python 3.12 is set as the default python3
- Node.js LTS is installed via NodeSource
- Permission Denied: Ensure you have sudo access
- Package Not Found: Update package lists with
sudo apt update - Snap Installation Fails: Restart snapd service and try again
- Docker Permission Issues: Log out and back in after installation
- All scripts provide detailed colored output
- Check individual script logs for specific issues
- Run scripts individually to isolate problems
- Fork the repository
- Create a feature branch
- Add your improvements
- Test on a clean system
- Submit a pull request
This project is open source and available under the MIT License.
Note: This setup is optimized for Ubuntu/Debian systems. For other distributions, you may need to modify package names and installation methods.