Skip to content

matbrgz/dotfiles

Repository files navigation

πŸš€ Universal Dotfiles & System Setup

License: MIT Stars Forks

    β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•—β–ˆβ–ˆβ•—     β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—
    β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•—β•šβ•β•β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•”β•β•β•β•β•β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•”β•β•β•β•β•β–ˆβ–ˆβ•”β•β•β•β•β•
    β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—
    β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•”β•β•β•  β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•”β•β•β•  β•šβ•β•β•β•β–ˆβ–ˆβ•‘
    β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•‘
    β•šβ•β•β•β•β•β•  β•šβ•β•β•β•β•β•    β•šβ•β•   β•šβ•β•     β•šβ•β•β•šβ•β•β•β•β•β•β•β•šβ•β•β•β•β•β•β•β•šβ•β•β•β•β•β•β•
                      by matbrgz

Universal system configuration tool for Linux distributions with intelligent package management and modern shell scripting practices.

✨ Features

  • 🎯 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

πŸ“¦ Available Programs

πŸ”§ Essential Tools

  • 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

πŸ’» Development Environment

  • 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

🐳 DevOps & Infrastructure

  • 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

🌐 Web Development

  • 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

πŸ–₯️ Desktop Applications

  • 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

☁️ Cloud Storage

  • dropbox - Cloud storage service
  • megasync - MEGA cloud storage client

πŸ› οΈ System Utilities

  • 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

🎨 Media & Entertainment

  • vlc - VLC Media Player
  • spotify - Music streaming
  • steam - Gaming platform

πŸ“± Productivity Tools

  • station - Smart browser for busy people
  • sharex - Screen capture and file sharing
  • httrack - Website copier
  • ccleaner - System optimization

πŸš€ Quick Start

Express Installation (Recommended)

curl -fsSL https://raw.githubusercontent.com/matbrgz/dotfiles/main/install.sh | bash

Manual Installation

git clone https://github.com/matbrgz/dotfiles.git
cd dotfiles
chmod +x install.sh
./install.sh

WSL Installation

git clone https://github.com/matbrgz/dotfiles.git
cd dotfiles
bash install.sh --wsl

πŸ“– Installation Modes

🎯 Express Mode

Installs essential tools with smart defaults:

./install.sh --express

🎨 Interactive Mode

Choose programs and configurations:

./install.sh --interactive

πŸ“‹ Preset Mode

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

βš™οΈ Configuration Only

Apply configs without installing programs:

./install.sh --config-only

πŸ”§ Configuration

Settings File

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
    }
  }
}

Environment Variables

export DOTFILES_CONFIG_PATH="./bootstrap/settings.json"
export DOTFILES_INSTALL_MODE="interactive"
export DOTFILES_BACKUP_DIR="$HOME/.dotfiles-backup"
export DOTFILES_LOG_LEVEL="info"

πŸŽ›οΈ Advanced Usage

Custom Configuration

./install.sh --config /path/to/custom-settings.json

Specific Programs

./install.sh --programs "git,docker,nodejs,vscode"

Force Reinstall

./install.sh --force

Debug Mode

./install.sh --debug

Dry Run

./install.sh --dry-run

πŸ”„ Package Manager Support

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 - -

πŸ“ Directory Structure

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

🎨 Customization

Personal Settings

Edit your personal information in bootstrap/settings.json:

{
  "personal": {
    "name": "Your Name",
    "email": "your.email@example.com", 
    "githubuser": "yourusername"
  }
}

Program Categories

Programs are organized into categories. You can enable/disable entire categories:

{
  "categories": {
    "development": {
      "enabled": true,
      "programs": ["nodejs", "python3", "golang", "docker"]
    }
  }
}

Custom Presets

Create your own installation presets:

{
  "presets": {
    "mysetup": {
      "name": "My Custom Setup",
      "description": "My personal development environment",
      "programs": ["git", "nodejs", "docker", "vscode"]
    }
  }
}

πŸ” System Information

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

πŸ§ͺ Testing

Run the test suite:

./scripts/test.sh

Validate configuration:

./scripts/validate-config.sh

🀝 Contributing

We welcome contributions! See our Contributing Guide for details.

Quick Contribution Steps

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Commit changes: git commit -m 'Add amazing feature'
  4. Push to branch: git push origin feature/amazing-feature
  5. Open a Pull Request

Adding New Programs

  1. Create script in programs/
  2. Add configuration to bootstrap/settings.json
  3. Update documentation
  4. Test across different systems

πŸ“‹ Requirements

Minimum Requirements

  • OS: Linux (any distribution), macOS 10.15+, Windows 10+ (WSL)
  • Memory: 512MB RAM
  • Storage: 1GB free space
  • Network: Internet connection for downloads

Recommended

  • Memory: 2GB+ RAM
  • Storage: 5GB+ free space
  • Terminal: Modern terminal with color support

πŸ”§ Troubleshooting

Common Issues

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

Debug Mode

Enable detailed logging:

export DOTFILES_DEBUG=1
./install.sh --debug

Reset Installation

./scripts/reset.sh

πŸ“Š Statistics

  • 70+ Programs supported
  • 9 Package Managers supported
  • 15+ Linux Distributions tested
  • 4 Installation Modes
  • 7 Preset Configurations
  • Multi-platform Support

πŸ™ Acknowledgments

  • Dotbot - Inspiration for configuration management
  • Homebrew - Package management inspiration
  • Oh My Zsh - Shell configuration ideas
  • Community contributors and testers

πŸ“ž Support

πŸ“œ License

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

About

Starting a WSL (Bash on Windows) has never been so simple

Resources

Code of conduct

Stars

Watchers

Forks

Packages

No packages published