βββββββ βββββββ βββββββββββββββββββββββ ββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββ ββββββββββββββββ
βββ ββββββ βββ βββ ββββββ ββββββ ββββββ ββββββββ
βββ ββββββ βββ βββ ββββββ ββββββ ββββββ ββββββββ
βββββββββββββββββ βββ βββ βββββββββββββββββββββββββββ
βββββββ βββββββ βββ βββ βββββββββββββββββββββββββββ
by matbrgz
Universal system configuration tool for Linux distributions with intelligent package management and modern shell scripting practices.
- π― Universal Compatibility: Support for Debian/Ubuntu, Arch, Fedora, SUSE, and more
- π§ Intelligent Package Management: Auto-detects and uses apt, pacman, yay, dnf, zypper, snap, flatpak, brew
- π¦ 70+ Pre-configured Programs: Essential tools, development environments, and desktop applications
- π¨ Beautiful UI: Colored output with progress indicators
- β‘ Multi-Platform Support: Linux, WSL, macOS, and Windows PowerShell scripts
- π Backup System: Automatic backup of existing configurations
- ποΈ Preset Configurations: Quick setup for different use cases (minimal, webdev, fullstack, devops, desktop)
- π JSON Configuration: Centralized, validated settings with environment-specific overrides
- π Interactive Installation: Choose programs and configurations interactively
- π System Detection: Automatic OS and package manager detection
- git - Distributed version control system
- curl - Command line tool for transferring data
- wget - Command-line utility for downloading files
- unzip - Extraction utility for zip archives
- htop - Interactive process viewer
- tmux - Terminal multiplexer
- vim - Highly configurable text editor
- ssh - Secure Shell protocol suite
- nodejs - JavaScript runtime built on Chrome's V8 engine
- nvm - Node Version Manager
- python3 - High-level programming language
- pyenv - Python Version Manager
- anaconda - Python distribution for data science
- golang - Go programming language
- rvm - Ruby Version Manager
- php - Server-side scripting language
- php-composer - Dependency manager for PHP
- php-laravel - PHP web application framework
- jdk - Java Development Kit
- dotnet - .NET Core framework
- vscode - Visual Studio Code editor
- insomnia - REST API client
- docker - Containerization platform
- kubectl - Kubernetes command-line tool
- kubernetes-helm - Kubernetes package manager
- terraform - Infrastructure as Code tool
- ansible - IT automation platform
- vagrant - Development environment manager
- azurecli - Azure command-line interface
- gcloudsdk - Google Cloud SDK
- powershell - Cross-platform command-line shell
- apache - HTTP web server
- nginx - HTTP and reverse proxy server
- mysql - Relational database management system
- mongodb - Document-based NoSQL database
- redis - In-memory data structure store
- postgresql - Advanced open-source relational database
- chrome - Google Chrome web browser
- firefox - Mozilla Firefox web browser
- discord - Voice, video and text communication
- spotify - Digital music streaming service
- vlc - Cross-platform multimedia player
- steam - Digital game distribution platform
- qbittorrent - BitTorrent client
- bitwarden - Password manager
- dropbox - Cloud storage service
- megasync - MEGA cloud storage client
- shellcheck - Static analysis tool for shell scripts
- shfmt - Shell script formatter
- mosh - Mobile shell with roaming
- x11server - X Window System server
- protobuf - Language-neutral data serialization
- netkit - Network emulation toolkit
- vlc - VLC Media Player
- spotify - Music streaming
- steam - Gaming platform
- station - Smart browser for busy people
- sharex - Screen capture and file sharing
- httrack - Website copier
- ccleaner - System optimization
curl -fsSL https://raw.githubusercontent.com/matbrgz/dotfiles/main/install.sh | bash
git clone https://github.com/matbrgz/dotfiles.git
cd dotfiles
chmod +x install.sh
./install.sh
git clone https://github.com/matbrgz/dotfiles.git
cd dotfiles
bash install.sh --wsl
Installs essential tools with smart defaults:
./install.sh --express
Choose programs and configurations:
./install.sh --interactive
Quick setup for specific use cases:
./install.sh --preset webdev # Web development
./install.sh --preset fullstack # Full stack development
./install.sh --preset devops # DevOps engineer
./install.sh --preset desktop # Desktop user
./install.sh --preset minimal # Essential tools only
Apply configs without installing programs:
./install.sh --config-only
The main configuration is in bootstrap/settings.json
:
{
"personal": {
"name": "matbrgz",
"email": "matbrgz@gmail.com",
"githubuser": "matbrgz",
"defaultfolder": {
"linux": "~/dev",
"wsl": "~/dev",
"windows": "~/dev"
}
},
"system": {
"detection": {
"auto_detect_os": true,
"auto_detect_package_manager": true
},
"behavior": {
"debug_mode": false,
"backup_configs": true,
"parallel_installs": true
}
}
}
export DOTFILES_CONFIG_PATH="./bootstrap/settings.json"
export DOTFILES_INSTALL_MODE="interactive"
export DOTFILES_BACKUP_DIR="$HOME/.dotfiles-backup"
export DOTFILES_LOG_LEVEL="info"
./install.sh --config /path/to/custom-settings.json
./install.sh --programs "git,docker,nodejs,vscode"
./install.sh --force
./install.sh --debug
./install.sh --dry-run
Distribution | Primary | Secondary | Tertiary |
---|---|---|---|
Ubuntu/Debian | apt | snap | flatpak |
Arch Linux | pacman | yay | - |
Fedora | dnf | snap | flatpak |
openSUSE | zypper | snap | flatpak |
macOS | brew | - | - |
Windows | choco | - | - |
dotfiles/
βββ π bootstrap/ # Configuration files
β βββ settings.json # Main configuration
β βββ version.json # Software versions
βββ π lib/ # Utility libraries
β βββ utils.sh # Common functions
βββ π programs/ # Installation scripts
β βββ configs/ # Configuration files
β βββ *.sh # Program installers
βββ π configurations/ # System configurations
β βββ git/ # Git specific configs
βββ π commands/ # Custom commands
βββ π scaffolding/ # Project templates
βββ install.sh # Main installer
Edit your personal information in bootstrap/settings.json
:
{
"personal": {
"name": "Your Name",
"email": "your.email@example.com",
"githubuser": "yourusername"
}
}
Programs are organized into categories. You can enable/disable entire categories:
{
"categories": {
"development": {
"enabled": true,
"programs": ["nodejs", "python3", "golang", "docker"]
}
}
}
Create your own installation presets:
{
"presets": {
"mysetup": {
"name": "My Custom Setup",
"description": "My personal development environment",
"programs": ["git", "nodejs", "docker", "vscode"]
}
}
}
The installer automatically detects:
- Operating System: Linux distributions, macOS, Windows (WSL)
- Package Managers: apt, pacman, yay, dnf, zypper, snap, flatpak, brew, choco
- Architecture: x86_64, arm64, i386
- Environment: Desktop, Server, WSL, Docker
Run the test suite:
./scripts/test.sh
Validate configuration:
./scripts/validate-config.sh
We welcome contributions! See our Contributing Guide for details.
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Commit changes:
git commit -m 'Add amazing feature'
- Push to branch:
git push origin feature/amazing-feature
- Open a Pull Request
- Create script in
programs/
- Add configuration to
bootstrap/settings.json
- Update documentation
- Test across different systems
- OS: Linux (any distribution), macOS 10.15+, Windows 10+ (WSL)
- Memory: 512MB RAM
- Storage: 1GB free space
- Network: Internet connection for downloads
- Memory: 2GB+ RAM
- Storage: 5GB+ free space
- Terminal: Modern terminal with color support
Permission Denied
chmod +x install.sh
sudo ./install.sh
Package Manager Not Found
./install.sh --force-package-manager apt
Network Issues
./install.sh --offline --local-packages
WSL Issues
./install.sh --wsl --fix-permissions
Enable detailed logging:
export DOTFILES_DEBUG=1
./install.sh --debug
./scripts/reset.sh
- 70+ Programs supported
- 9 Package Managers supported
- 15+ Linux Distributions tested
- 4 Installation Modes
- 7 Preset Configurations
- Multi-platform Support
- Dotbot - Inspiration for configuration management
- Homebrew - Package management inspiration
- Oh My Zsh - Shell configuration ideas
- Community contributors and testers
- π Issues
- π¬ Discussions
- π§ Email
- π¦ Twitter
This project is licensed under the MIT License - see the LICENSE file for details.
β Star this repository if it helped you!
Made with β€οΈ by matbrgz