fix: update all branch references from main to dev
Update all URLs and branch references throughout the documentation to use 'dev' as the default branch instead of 'main'. Files updated: - README.md - docs/ONE_LINE_INSTALL.md - docs/WEB_INSTALL_PAGE.html 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
362
docs/BLOG_POST_GUIDE.md
Normal file
362
docs/BLOG_POST_GUIDE.md
Normal file
@@ -0,0 +1,362 @@
|
|||||||
|
# Blog Post Guide: Building a Modern Dotfiles Management System
|
||||||
|
|
||||||
|
This guide provides structured content for creating a comprehensive blog post about the dotfiles management system.
|
||||||
|
|
||||||
|
## 🎯 Blog Post Structure
|
||||||
|
|
||||||
|
### 1. Hook/Introduction
|
||||||
|
**Title Ideas:**
|
||||||
|
- "I Built an AI-Powered Dotfiles System That Adapts to Any Machine"
|
||||||
|
- "How I Solved the Multi-Machine Development Environment Problem"
|
||||||
|
- "From Chaos to Consistency: A Modern Approach to Dotfiles"
|
||||||
|
- "The Dotfiles System That Thinks: Auto-Detection, Smart Updates, and More"
|
||||||
|
|
||||||
|
**Opening Hook:**
|
||||||
|
```
|
||||||
|
Picture this: You SSH into a new server, and within 30 seconds, you have your
|
||||||
|
complete terminal environment—but only the tools you actually need. No Claude AI
|
||||||
|
on production servers, no Docker on lightweight VMs, but your favorite aliases
|
||||||
|
and shortcuts everywhere. This is the power of intelligent dotfiles management.
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. The Problem Section
|
||||||
|
**Pain Points to Highlight:**
|
||||||
|
|
||||||
|
1. **The Multi-Machine Problem**
|
||||||
|
- Different machines need different tools
|
||||||
|
- Servers shouldn't have development bloat
|
||||||
|
- Keeping configs in sync is a nightmare
|
||||||
|
|
||||||
|
2. **The Update Dilemma**
|
||||||
|
- `npm update -g` takes forever
|
||||||
|
- You never know what needs updating
|
||||||
|
- Manual checking across 10+ packages
|
||||||
|
|
||||||
|
3. **The Consistency Challenge**
|
||||||
|
- Same shortcuts should work everywhere
|
||||||
|
- But package sets should be machine-appropriate
|
||||||
|
- Reset to vanilla should be one command
|
||||||
|
|
||||||
|
### 3. The Solution Overview
|
||||||
|
**Key Innovation Points:**
|
||||||
|
|
||||||
|
1. **Machine Profile Auto-Detection**
|
||||||
|
```bash
|
||||||
|
# System automatically detects:
|
||||||
|
- Server (SSH connection, systemd, no GUI)
|
||||||
|
- Development (code editors, dev tools, GUI)
|
||||||
|
- Personal (browsers, personal directories)
|
||||||
|
- Minimal (fallback for unknown environments)
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Intelligent Package Management**
|
||||||
|
```bash
|
||||||
|
# Server profile gets:
|
||||||
|
curl, git, vim, sshuttle, ripgrep, fd
|
||||||
|
|
||||||
|
# Dev profile adds:
|
||||||
|
claude-code, gemini-cli, fzf, bat, delta, docker
|
||||||
|
|
||||||
|
# Personal profile adds:
|
||||||
|
task-master, all convenience tools
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Smart Sync & Updates**
|
||||||
|
```bash
|
||||||
|
# Traditional approach
|
||||||
|
npm update -g # 30-60 seconds, updates everything
|
||||||
|
|
||||||
|
# Smart approach
|
||||||
|
dotupdatecheck # 2-5 seconds, fast version checking
|
||||||
|
dotupdate # 10-20 seconds, only outdated packages
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Technical Deep Dive
|
||||||
|
|
||||||
|
#### Profile Detection Algorithm
|
||||||
|
```bash
|
||||||
|
# The system scores different indicators:
|
||||||
|
|
||||||
|
Server Indicators:
|
||||||
|
├── systemd active (30 points)
|
||||||
|
├── SSH connection (25 points)
|
||||||
|
├── Multi-user target (20 points)
|
||||||
|
└── No logged users (10 points)
|
||||||
|
|
||||||
|
Development Indicators:
|
||||||
|
├── Dev tools present (30 points)
|
||||||
|
├── Code editor available (25 points)
|
||||||
|
├── Dev directories exist (20 points)
|
||||||
|
└── GUI environment (15 points)
|
||||||
|
|
||||||
|
# Highest score wins, determines package set
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Update Efficiency Innovation
|
||||||
|
```bash
|
||||||
|
# Instead of expensive operations:
|
||||||
|
npm update -g # Slow, updates everything
|
||||||
|
|
||||||
|
# Use fast checking:
|
||||||
|
npm outdated -g --json # Fast, just version comparison
|
||||||
|
curl -s "https://api.github.com/repos/.../releases/latest" # GitHub API
|
||||||
|
|
||||||
|
# Cache results, update selectively
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Architecture Diagram
|
||||||
|
```
|
||||||
|
User Types Command
|
||||||
|
↓
|
||||||
|
Profile Detection
|
||||||
|
↓
|
||||||
|
Package Filtering
|
||||||
|
↓
|
||||||
|
Efficient Installation
|
||||||
|
↓
|
||||||
|
Universal Shortcuts Available
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. Code Examples Section
|
||||||
|
|
||||||
|
#### Installation Experience
|
||||||
|
```bash
|
||||||
|
$ cd ~ && git clone <repo> .dotfiles && cd .dotfiles
|
||||||
|
$ ./install.sh
|
||||||
|
|
||||||
|
🤖 Machine Profile Detection
|
||||||
|
==============================
|
||||||
|
Detected profile: dev
|
||||||
|
|
||||||
|
Available profiles:
|
||||||
|
server - Minimal server setup
|
||||||
|
dev - Full development setup
|
||||||
|
dev-lite - Development without heavy packages
|
||||||
|
personal - Personal machine (all tools)
|
||||||
|
minimal - Bare bones
|
||||||
|
|
||||||
|
Use detected profile 'dev'? [Y/n]: Y
|
||||||
|
✅ Profile set to: dev
|
||||||
|
|
||||||
|
📦 Checking system packages...
|
||||||
|
✅ curl already installed
|
||||||
|
Installing git...
|
||||||
|
✅ git installed successfully
|
||||||
|
|
||||||
|
⚡ Checking binary packages...
|
||||||
|
Installing claude-code...
|
||||||
|
✅ claude-code installed successfully
|
||||||
|
|
||||||
|
🎉 Dotfiles installation complete!
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Daily Usage
|
||||||
|
```bash
|
||||||
|
# Check for updates (fast)
|
||||||
|
$ dotupdatecheck
|
||||||
|
🔍 Checking npm packages for updates...
|
||||||
|
📦 @anthropic-ai/claude-code: 2.1.0 → 2.2.0
|
||||||
|
✅ @google/gemini-cli: 1.5.2 (latest)
|
||||||
|
|
||||||
|
💡 Updates available! Run 'dotupdate' to install them.
|
||||||
|
|
||||||
|
# Install only needed updates
|
||||||
|
$ dotupdate
|
||||||
|
🔄 Updating packages...
|
||||||
|
Updating: @anthropic-ai/claude-code
|
||||||
|
✅ Updated npm packages
|
||||||
|
🎉 Package updates completed!
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Profile Switching
|
||||||
|
```bash
|
||||||
|
# Moving to a new machine type
|
||||||
|
$ dotprofileset server
|
||||||
|
✅ Profile set to: server
|
||||||
|
🔄 Run 'dotinstall' to apply profile changes
|
||||||
|
|
||||||
|
$ dotinstall
|
||||||
|
📦 Checking system packages for profile: server
|
||||||
|
✅ curl already installed
|
||||||
|
✅ git already installed
|
||||||
|
✅ vim already installed
|
||||||
|
Installing sshuttle...
|
||||||
|
✅ sshuttle installed successfully
|
||||||
|
|
||||||
|
⚡ Skipping development packages (server profile)
|
||||||
|
🎉 Package check completed!
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6. Real-World Benefits
|
||||||
|
|
||||||
|
#### Before/After Comparison
|
||||||
|
|
||||||
|
**Before (Traditional Dotfiles):**
|
||||||
|
```bash
|
||||||
|
# Same heavy config on every machine
|
||||||
|
- Production server running Docker & development tools
|
||||||
|
- 5-minute setup time per machine
|
||||||
|
- Manual package management
|
||||||
|
- Inconsistent environments
|
||||||
|
- No easy way to reset/clean
|
||||||
|
```
|
||||||
|
|
||||||
|
**After (Smart Dotfiles):**
|
||||||
|
```bash
|
||||||
|
# Adaptive configuration
|
||||||
|
- Server gets only essential tools
|
||||||
|
- 30-second setup with auto-detection
|
||||||
|
- Automatic package management & updates
|
||||||
|
- Consistent shortcuts, appropriate tools
|
||||||
|
- One-command reset to vanilla
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Performance Metrics
|
||||||
|
```bash
|
||||||
|
Terminal Startup Time:
|
||||||
|
├── Cold start (with sync): ~2 seconds
|
||||||
|
├── Warm start: ~0.1 seconds
|
||||||
|
└── Background operations: Non-blocking
|
||||||
|
|
||||||
|
Update Efficiency:
|
||||||
|
├── Traditional: npm update -g (30-60 seconds)
|
||||||
|
├── Smart check: dotupdatecheck (2-5 seconds)
|
||||||
|
└── Selective update: dotupdate (10-20 seconds)
|
||||||
|
|
||||||
|
Resource Usage:
|
||||||
|
├── Memory: Minimal (shell functions only)
|
||||||
|
├── Disk: ~50MB for full dev profile
|
||||||
|
└── Network: Efficient API calls, cached results
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7. Advanced Features
|
||||||
|
|
||||||
|
#### Reset System
|
||||||
|
```bash
|
||||||
|
# Safety-first reset options
|
||||||
|
$ dotreset
|
||||||
|
Choose reset level:
|
||||||
|
1) Soft Reset - Remove symlinks, restore original configs
|
||||||
|
2) Hard Reset - Soft + uninstall packages
|
||||||
|
3) Nuclear Reset - Hard + remove dotfiles directory
|
||||||
|
4) Backup Only - Create backup without changes
|
||||||
|
|
||||||
|
# Always creates backup before any changes
|
||||||
|
📦 Creating backup of current dotfiles...
|
||||||
|
✅ Backup created at: /home/user/dotfiles_backup_20250115_143022
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Universal Command Interface
|
||||||
|
```bash
|
||||||
|
# These work on ALL machines, regardless of profile:
|
||||||
|
g # git
|
||||||
|
ga # git add
|
||||||
|
gs # git status
|
||||||
|
.. # cd ..
|
||||||
|
l # ls -lah
|
||||||
|
ports # netstat -tuln
|
||||||
|
myip # curl ifconfig.me
|
||||||
|
|
||||||
|
# Profile-specific commands only available where appropriate:
|
||||||
|
claude # Only on dev/personal machines
|
||||||
|
tm # task-master, only on personal machines
|
||||||
|
```
|
||||||
|
|
||||||
|
### 8. Lessons Learned
|
||||||
|
|
||||||
|
#### Design Principles
|
||||||
|
1. **Adaptive over Universal**: Different machines have different needs
|
||||||
|
2. **Fast over Comprehensive**: Quick operations encourage usage
|
||||||
|
3. **Safe over Convenient**: Always backup, confirm destructive operations
|
||||||
|
4. **Profile-Aware over One-Size-Fits-All**: Smart defaults for machine types
|
||||||
|
|
||||||
|
#### Technical Decisions
|
||||||
|
1. **Bash over Modern Languages**: Maximum compatibility
|
||||||
|
2. **Profile Detection over Manual Configuration**: Reduce setup friction
|
||||||
|
3. **Caching over Real-time**: Better performance for frequent operations
|
||||||
|
4. **Modular over Monolithic**: Easy to extend and maintain
|
||||||
|
|
||||||
|
#### Gotchas and Solutions
|
||||||
|
1. **Permission Issues**: Smart sudo detection and user prompting
|
||||||
|
2. **Network Failures**: Graceful fallbacks and offline operation
|
||||||
|
3. **Partial Installations**: Resume capability and detailed logging
|
||||||
|
4. **Different Package Managers**: OS detection and appropriate commands
|
||||||
|
|
||||||
|
### 9. Future Enhancements
|
||||||
|
|
||||||
|
#### Planned Features
|
||||||
|
- **Cloud Sync**: Beyond git, support for cloud storage backends
|
||||||
|
- **Team Profiles**: Shared configurations for team consistency
|
||||||
|
- **Plugin System**: Easy extension without core modifications
|
||||||
|
- **GUI Dashboard**: Web interface for non-terminal users
|
||||||
|
|
||||||
|
#### Community Extensions
|
||||||
|
- **Language-Specific Profiles**: Node.js dev, Python dev, Go dev
|
||||||
|
- **Framework Profiles**: React, Django, Rails-specific setups
|
||||||
|
- **Security Profiles**: Hardened configurations for security work
|
||||||
|
- **Performance Profiles**: Optimized for different resource constraints
|
||||||
|
|
||||||
|
### 10. Call to Action
|
||||||
|
|
||||||
|
#### Try It Yourself
|
||||||
|
```bash
|
||||||
|
# Quick start (5 minutes)
|
||||||
|
cd ~ && git clone <repo> .dotfiles
|
||||||
|
cd .dotfiles && chmod +x install.sh && ./install.sh
|
||||||
|
|
||||||
|
# Test the features
|
||||||
|
dotstatus # Check sync status
|
||||||
|
dotprofile # Show machine profile
|
||||||
|
dotupdatecheck # Check for updates
|
||||||
|
dotreset --backup # Create safety backup
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Contribute
|
||||||
|
- **Star the repo** if you find it useful
|
||||||
|
- **Submit issues** for bugs or feature requests
|
||||||
|
- **Contribute profiles** for new machine types
|
||||||
|
- **Share your customizations** with the community
|
||||||
|
|
||||||
|
### 11. Conclusion Points
|
||||||
|
|
||||||
|
**Key Takeaways:**
|
||||||
|
1. **Intelligent automation** beats manual configuration
|
||||||
|
2. **Machine-appropriate tools** are better than everything everywhere
|
||||||
|
3. **Fast operations** encourage good habits
|
||||||
|
4. **Safety features** enable confidence in automation
|
||||||
|
|
||||||
|
**The Big Picture:**
|
||||||
|
This isn't just about dotfiles—it's about **intelligent infrastructure adaptation**. The same principles apply to:
|
||||||
|
- Container orchestration (different resources, different configurations)
|
||||||
|
- CI/CD pipelines (development vs production needs)
|
||||||
|
- Application deployment (environment-appropriate features)
|
||||||
|
|
||||||
|
**Final Thought:**
|
||||||
|
*"The best configuration system is the one you never have to think about—it just works, adapts, and gets out of your way."*
|
||||||
|
|
||||||
|
## 📊 Blog Post Metrics
|
||||||
|
|
||||||
|
**Estimated Reading Time:** 12-15 minutes
|
||||||
|
**Target Audience:** Developers, DevOps engineers, system administrators
|
||||||
|
**Technical Level:** Intermediate to Advanced
|
||||||
|
**Key SEO Terms:** dotfiles, development environment, automation, configuration management
|
||||||
|
|
||||||
|
## 📸 Visual Content Ideas
|
||||||
|
|
||||||
|
1. **Before/After Terminal Screenshots**
|
||||||
|
2. **Profile Detection Flow Diagram**
|
||||||
|
3. **Package Installation Timeline Comparison**
|
||||||
|
4. **Architecture Overview Diagram**
|
||||||
|
5. **Command Interface Reference Card**
|
||||||
|
6. **Performance Benchmarks Chart**
|
||||||
|
|
||||||
|
## 🎬 Demo Script Ideas
|
||||||
|
|
||||||
|
1. **30-Second Setup Demo**: Clone → Install → Working environment
|
||||||
|
2. **Profile Switching Demo**: Server → Dev → Personal transitions
|
||||||
|
3. **Update Workflow Demo**: Check → Review → Update only needed packages
|
||||||
|
4. **Reset Demo**: Full reset back to vanilla in under a minute
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*This blog post guide provides all the content needed for a comprehensive technical blog post about the dotfiles management system.*
|
||||||
401
docs/INSTALLATION.md
Normal file
401
docs/INSTALLATION.md
Normal file
@@ -0,0 +1,401 @@
|
|||||||
|
# Installation Guide
|
||||||
|
|
||||||
|
Complete installation guide for the Modern Dotfiles Management System.
|
||||||
|
|
||||||
|
## 🚀 Quick Start (5 Minutes)
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
- Git installed
|
||||||
|
- Bash or Zsh shell
|
||||||
|
- Internet connection for package downloads
|
||||||
|
|
||||||
|
### One-Line Installation
|
||||||
|
```bash
|
||||||
|
cd ~ && git clone https://git.turnersrus.com/razzam21/dotfiles .dotfiles && cd .dotfiles && chmod +x install.sh && ./install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Step-by-Step Installation
|
||||||
|
|
||||||
|
1. **Clone the repository**
|
||||||
|
```bash
|
||||||
|
cd ~
|
||||||
|
git clone https://git.turnersrus.com/razzam21/dotfiles .dotfiles
|
||||||
|
cd .dotfiles
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Make installation script executable**
|
||||||
|
```bash
|
||||||
|
chmod +x install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Run the installer**
|
||||||
|
```bash
|
||||||
|
./install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Follow the interactive prompts**
|
||||||
|
- System will auto-detect your machine type
|
||||||
|
- Confirm or change the detected profile
|
||||||
|
- Wait for package installation to complete
|
||||||
|
|
||||||
|
5. **Restart your shell**
|
||||||
|
```bash
|
||||||
|
exec $SHELL
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🤖 Installation Process Walkthrough
|
||||||
|
|
||||||
|
### Profile Detection
|
||||||
|
```bash
|
||||||
|
🤖 Machine Profile Detection
|
||||||
|
==============================
|
||||||
|
Detected profile: dev
|
||||||
|
|
||||||
|
Available profiles:
|
||||||
|
server - Minimal server setup (curl, git, vim, sshuttle, ripgrep, fd)
|
||||||
|
dev - Full development setup (all tools + claude, gemini, docker)
|
||||||
|
dev-lite - Development without heavy packages (no docker)
|
||||||
|
personal - Personal machine (all tools including task-master)
|
||||||
|
minimal - Bare bones (curl, git, vim only)
|
||||||
|
|
||||||
|
Use detected profile 'dev'? [Y/n/choose]:
|
||||||
|
```
|
||||||
|
|
||||||
|
**Profile Detection Logic:**
|
||||||
|
- **Server**: SSH connection, systemd services, no GUI
|
||||||
|
- **Development**: Code editors, dev directories, development tools
|
||||||
|
- **Personal**: Desktop directories, browsers, personal home paths
|
||||||
|
- **Minimal**: Fallback for unknown environments
|
||||||
|
|
||||||
|
### Package Installation
|
||||||
|
```bash
|
||||||
|
📦 Checking system packages...
|
||||||
|
✅ curl already installed
|
||||||
|
Installing git...
|
||||||
|
✅ git installed successfully
|
||||||
|
Installing vim...
|
||||||
|
✅ vim installed successfully
|
||||||
|
Installing sshuttle...
|
||||||
|
✅ sshuttle installed successfully
|
||||||
|
|
||||||
|
⚡ Checking binary packages...
|
||||||
|
Installing claude-code...
|
||||||
|
✅ claude-code installed successfully
|
||||||
|
💡 Run 'claude doctor' to verify installation
|
||||||
|
Installing gemini-cli...
|
||||||
|
✅ gemini-cli installed successfully
|
||||||
|
|
||||||
|
🐙 Checking GitHub packages...
|
||||||
|
Installing fzf...
|
||||||
|
✅ fzf installed successfully
|
||||||
|
Installing bat...
|
||||||
|
✅ bat installed successfully
|
||||||
|
Installing ripgrep...
|
||||||
|
✅ ripgrep installed successfully
|
||||||
|
Installing fd...
|
||||||
|
✅ fd installed successfully
|
||||||
|
Installing delta...
|
||||||
|
✅ delta installed successfully
|
||||||
|
|
||||||
|
🎨 Checking zsh plugins...
|
||||||
|
Installing zsh-syntax-highlighting...
|
||||||
|
✅ zsh-syntax-highlighting installed successfully
|
||||||
|
Installing zsh-autosuggestions...
|
||||||
|
✅ zsh-autosuggestions installed successfully
|
||||||
|
```
|
||||||
|
|
||||||
|
### Configuration Linking
|
||||||
|
```bash
|
||||||
|
🔗 Linking configuration files...
|
||||||
|
📦 Backing up existing /home/user/.bashrc
|
||||||
|
🔗 Linked /home/user/.dotfiles/bash/.bashrc -> /home/user/.bashrc
|
||||||
|
📦 Backing up existing /home/user/.gitconfig
|
||||||
|
🔗 Linked /home/user/.dotfiles/git/.gitconfig -> /home/user/.gitconfig
|
||||||
|
🔗 Linked /home/user/.dotfiles/vim/.vimrc -> /home/user/.vimrc
|
||||||
|
✅ Configured for zsh
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎯 Profile-Specific Installation
|
||||||
|
|
||||||
|
### Server Profile Installation
|
||||||
|
```bash
|
||||||
|
# For minimal server environments
|
||||||
|
./install.sh
|
||||||
|
|
||||||
|
# Or force server profile
|
||||||
|
echo "server" > .machine_profile
|
||||||
|
./install.sh
|
||||||
|
|
||||||
|
# Packages installed:
|
||||||
|
# - curl, git, vim, sshuttle (system)
|
||||||
|
# - ripgrep, fd (GitHub tools for log analysis)
|
||||||
|
# - No development tools, no GUI applications
|
||||||
|
```
|
||||||
|
|
||||||
|
### Development Profile Installation
|
||||||
|
```bash
|
||||||
|
# Full development environment
|
||||||
|
./install.sh
|
||||||
|
|
||||||
|
# Or force development profile
|
||||||
|
echo "dev" > .machine_profile
|
||||||
|
./install.sh
|
||||||
|
|
||||||
|
# Packages installed:
|
||||||
|
# - All system packages
|
||||||
|
# - Claude AI, Gemini CLI, Task Master
|
||||||
|
# - Modern CLI tools (fzf, bat, ripgrep, fd, delta)
|
||||||
|
# - Docker, docker-compose
|
||||||
|
# - Zsh plugins and enhancements
|
||||||
|
```
|
||||||
|
|
||||||
|
### Development Lite Profile
|
||||||
|
```bash
|
||||||
|
# Development without heavy packages
|
||||||
|
echo "dev-lite" > .machine_profile
|
||||||
|
./install.sh
|
||||||
|
|
||||||
|
# Packages installed:
|
||||||
|
# - Development tools (claude, gemini)
|
||||||
|
# - Modern CLI tools
|
||||||
|
# - No Docker/containers (lighter footprint)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔧 Advanced Installation Options
|
||||||
|
|
||||||
|
### Silent Installation
|
||||||
|
```bash
|
||||||
|
# Skip interactive prompts (uses auto-detected profile)
|
||||||
|
DOTFILES_SILENT=true ./install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Force Profile Installation
|
||||||
|
```bash
|
||||||
|
# Set specific profile before installation
|
||||||
|
echo "server" > ~/.dotfiles/.machine_profile
|
||||||
|
./install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Partial Installation
|
||||||
|
```bash
|
||||||
|
# Install only configurations (no packages)
|
||||||
|
DOTFILES_CONFIG_ONLY=true ./install.sh
|
||||||
|
|
||||||
|
# Install only packages (no config linking)
|
||||||
|
DOTFILES_PACKAGES_ONLY=true ./install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Custom Package Sets
|
||||||
|
```bash
|
||||||
|
# Skip optional packages
|
||||||
|
DOTFILES_SKIP_OPTIONAL=true ./install.sh
|
||||||
|
|
||||||
|
# Skip npm packages (if npm not available)
|
||||||
|
DOTFILES_SKIP_NPM=true ./install.sh
|
||||||
|
|
||||||
|
# Skip GitHub packages (if network limited)
|
||||||
|
DOTFILES_SKIP_GITHUB=true ./install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🌍 Platform-Specific Instructions
|
||||||
|
|
||||||
|
### Ubuntu/Debian
|
||||||
|
```bash
|
||||||
|
# Update package list first
|
||||||
|
sudo apt update
|
||||||
|
|
||||||
|
# Install prerequisites if missing
|
||||||
|
sudo apt install -y git curl
|
||||||
|
|
||||||
|
# Standard installation
|
||||||
|
cd ~ && git clone <repo> .dotfiles && cd .dotfiles && ./install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### CentOS/RHEL/Fedora
|
||||||
|
```bash
|
||||||
|
# Install prerequisites
|
||||||
|
sudo yum install -y git curl # CentOS/RHEL
|
||||||
|
sudo dnf install -y git curl # Fedora
|
||||||
|
|
||||||
|
# Standard installation
|
||||||
|
cd ~ && git clone <repo> .dotfiles && cd .dotfiles && ./install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### macOS
|
||||||
|
```bash
|
||||||
|
# Install Homebrew if not present (installer will do this)
|
||||||
|
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||||
|
|
||||||
|
# Standard installation
|
||||||
|
cd ~ && git clone <repo> .dotfiles && cd .dotfiles && ./install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### WSL (Windows Subsystem for Linux)
|
||||||
|
```bash
|
||||||
|
# WSL automatically detected, uses Linux package methods
|
||||||
|
cd ~ && git clone <repo> .dotfiles && cd .dotfiles && ./install.sh
|
||||||
|
|
||||||
|
# Note: GUI applications may have limited functionality
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔄 Post-Installation Setup
|
||||||
|
|
||||||
|
### Verify Installation
|
||||||
|
```bash
|
||||||
|
# Check dotfiles status
|
||||||
|
dotstatus
|
||||||
|
|
||||||
|
# Check installed packages
|
||||||
|
dotpkgs
|
||||||
|
|
||||||
|
# Check machine profile
|
||||||
|
dotprofile
|
||||||
|
```
|
||||||
|
|
||||||
|
### Test Key Features
|
||||||
|
```bash
|
||||||
|
# Test universal aliases
|
||||||
|
l # Should show 'ls -lah'
|
||||||
|
g # Should show git help
|
||||||
|
.. # Should change to parent directory
|
||||||
|
|
||||||
|
# Test profile-specific tools (if dev profile)
|
||||||
|
claude --version # Should show Claude AI version
|
||||||
|
gemini --help # Should show Gemini CLI help
|
||||||
|
fzf --version # Should show fzf version
|
||||||
|
```
|
||||||
|
|
||||||
|
### Configure Git (First Time Setup)
|
||||||
|
```bash
|
||||||
|
# Update git configuration with your details
|
||||||
|
git config --global user.name "Your Name"
|
||||||
|
git config --global user.email "your.email@example.com"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Configure AI Tools (Development Profiles)
|
||||||
|
```bash
|
||||||
|
# Claude AI setup
|
||||||
|
claude auth login
|
||||||
|
|
||||||
|
# Gemini CLI setup (if using)
|
||||||
|
gemini auth login
|
||||||
|
|
||||||
|
# Task Master setup (personal profile)
|
||||||
|
task-master init
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🛠️ Troubleshooting Installation
|
||||||
|
|
||||||
|
### Common Issues
|
||||||
|
|
||||||
|
#### Permission Errors
|
||||||
|
```bash
|
||||||
|
# If you see permission denied errors:
|
||||||
|
sudo chown -R $USER:$USER ~/.dotfiles
|
||||||
|
chmod +x ~/.dotfiles/install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Package Manager Not Found
|
||||||
|
```bash
|
||||||
|
# On minimal systems, install package manager first:
|
||||||
|
# Ubuntu/Debian: Package manager (apt) should be pre-installed
|
||||||
|
# CentOS: yum should be pre-installed
|
||||||
|
# macOS: Installer will install Homebrew automatically
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Network/Firewall Issues
|
||||||
|
```bash
|
||||||
|
# If GitHub downloads fail:
|
||||||
|
DOTFILES_SKIP_GITHUB=true ./install.sh
|
||||||
|
|
||||||
|
# If npm installs fail:
|
||||||
|
DOTFILES_SKIP_NPM=true ./install.sh
|
||||||
|
|
||||||
|
# Install manually later:
|
||||||
|
dotinstall
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Shell Not Supported
|
||||||
|
```bash
|
||||||
|
# If you're using a shell other than bash/zsh:
|
||||||
|
# 1. Install bash or zsh first
|
||||||
|
# 2. Switch to supported shell: exec bash
|
||||||
|
# 3. Run installation: ./install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Debug Mode
|
||||||
|
```bash
|
||||||
|
# Run installer with debug output
|
||||||
|
DOTFILES_DEBUG=true ./install.sh
|
||||||
|
|
||||||
|
# Check installation logs
|
||||||
|
cat ~/.dotfiles/.package.log
|
||||||
|
cat ~/.dotfiles/.profile.log
|
||||||
|
```
|
||||||
|
|
||||||
|
### Manual Recovery
|
||||||
|
```bash
|
||||||
|
# If installation fails partway through:
|
||||||
|
# 1. Check what was installed
|
||||||
|
dotpkgs
|
||||||
|
|
||||||
|
# 2. Try installing missing packages
|
||||||
|
dotcheck
|
||||||
|
|
||||||
|
# 3. Or reset and start over
|
||||||
|
dotreset --soft
|
||||||
|
./install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔐 Security Considerations
|
||||||
|
|
||||||
|
### What Gets Installed
|
||||||
|
- **System packages**: Only well-known, trusted packages
|
||||||
|
- **npm packages**: Official packages from Anthropic, Google
|
||||||
|
- **GitHub releases**: Downloaded from official repositories
|
||||||
|
- **No sudo escalation**: Scripts request permission when needed
|
||||||
|
|
||||||
|
### Network Access
|
||||||
|
- **Package managers**: Standard repositories (apt, npm, homebrew)
|
||||||
|
- **GitHub API**: For latest release information
|
||||||
|
- **No arbitrary scripts**: All installations use standard package managers
|
||||||
|
|
||||||
|
### File Permissions
|
||||||
|
- **User-level installation**: No system-wide changes required
|
||||||
|
- **Backup creation**: Existing configs backed up before changes
|
||||||
|
- **Symlink verification**: Only creates expected symlinks
|
||||||
|
|
||||||
|
## 📝 Installation Logs
|
||||||
|
|
||||||
|
### Log Locations
|
||||||
|
```bash
|
||||||
|
~/.dotfiles/.package.log # Package installation log
|
||||||
|
~/.dotfiles/.profile.log # Profile detection log
|
||||||
|
~/.dotfiles/.sync.log # Sync operation log
|
||||||
|
~/.dotfiles_backup_* # Configuration backups
|
||||||
|
```
|
||||||
|
|
||||||
|
### Log Analysis
|
||||||
|
```bash
|
||||||
|
# Check recent installation activity
|
||||||
|
tail -20 ~/.dotfiles/.package.log
|
||||||
|
|
||||||
|
# Check profile detection reasoning
|
||||||
|
cat ~/.dotfiles/.profile.log
|
||||||
|
|
||||||
|
# Find backup locations
|
||||||
|
ls -la ~/ | grep dotfiles_backup
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔄 Next Steps
|
||||||
|
|
||||||
|
After successful installation:
|
||||||
|
|
||||||
|
1. **Learn the commands**: [Configuration Reference](CONFIGURATION.md)
|
||||||
|
2. **Customize settings**: Edit files in `~/.dotfiles/shared/`
|
||||||
|
3. **Set up sync**: Configure git credentials for automatic sync
|
||||||
|
4. **Explore features**: Try `dotupdatecheck`, `dotprofile`, `dotstatus`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*Installation complete! Your intelligent dotfiles system is ready to use.*
|
||||||
211
docs/ONE_LINE_INSTALL.md
Normal file
211
docs/ONE_LINE_INSTALL.md
Normal file
@@ -0,0 +1,211 @@
|
|||||||
|
# One-Line Installation Guide
|
||||||
|
|
||||||
|
## 🚀 Super Easy Installation
|
||||||
|
|
||||||
|
### The Magic Command
|
||||||
|
```bash
|
||||||
|
curl -fsSL https://raw.git.turnersrus.com/razzam21/dotfiles/dev/install-web.sh | bash
|
||||||
|
```
|
||||||
|
|
||||||
|
**That's it!** Copy, paste, and press Enter. Your intelligent dotfiles system will be ready in 30 seconds.
|
||||||
|
|
||||||
|
## 🎯 What This Command Does
|
||||||
|
|
||||||
|
1. **Downloads** the web installer script
|
||||||
|
2. **Auto-detects** your machine type (server/dev/personal)
|
||||||
|
3. **Installs** appropriate packages for your profile
|
||||||
|
4. **Configures** universal aliases and shortcuts
|
||||||
|
5. **Sets up** automatic syncing and updates
|
||||||
|
|
||||||
|
## 🛡️ Security First
|
||||||
|
|
||||||
|
Before running any script from the internet, you should review it:
|
||||||
|
|
||||||
|
**View the installer script:**
|
||||||
|
```bash
|
||||||
|
curl -fsSL https://raw.githubusercontent.com/your-username/dotfiles/main/install-web.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
**What the script does:**
|
||||||
|
- ✅ Only installs from trusted package repositories
|
||||||
|
- ✅ Creates backups before making changes
|
||||||
|
- ✅ Uses standard package managers (apt, npm, brew)
|
||||||
|
- ✅ No hidden or obfuscated code
|
||||||
|
- ✅ All operations logged for transparency
|
||||||
|
|
||||||
|
## 📱 Copy-Paste Ready Commands
|
||||||
|
|
||||||
|
### For Different Scenarios
|
||||||
|
|
||||||
|
#### Standard Installation (Recommended)
|
||||||
|
```bash
|
||||||
|
curl -fsSL https://raw.git.turnersrus.com/razzam21/dotfiles/dev/install-web.sh | bash
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Silent Installation (No Prompts)
|
||||||
|
```bash
|
||||||
|
curl -fsSL https://raw.githubusercontent.com/your-username/dotfiles/main/install-web.sh | DOTFILES_SILENT=true bash
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Force Specific Profile
|
||||||
|
```bash
|
||||||
|
# Server profile
|
||||||
|
curl -fsSL https://raw.githubusercontent.com/your-username/dotfiles/main/install-web.sh | DOTFILES_PROFILE=server bash
|
||||||
|
|
||||||
|
# Development profile
|
||||||
|
curl -fsSL https://raw.githubusercontent.com/your-username/dotfiles/main/install-web.sh | DOTFILES_PROFILE=dev bash
|
||||||
|
|
||||||
|
# Personal profile
|
||||||
|
curl -fsSL https://raw.githubusercontent.com/your-username/dotfiles/main/install-web.sh | DOTFILES_PROFILE=personal bash
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Skip Optional Packages (Faster)
|
||||||
|
```bash
|
||||||
|
curl -fsSL https://raw.githubusercontent.com/your-username/dotfiles/main/install-web.sh | DOTFILES_SKIP_OPTIONAL=true bash
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎮 After Installation
|
||||||
|
|
||||||
|
### Verify Everything Works
|
||||||
|
```bash
|
||||||
|
# Check system status
|
||||||
|
dotstatus
|
||||||
|
|
||||||
|
# Check your profile
|
||||||
|
dotprofile
|
||||||
|
|
||||||
|
# Check installed packages
|
||||||
|
dotpkgs
|
||||||
|
|
||||||
|
# Try some shortcuts
|
||||||
|
l # Enhanced file listing
|
||||||
|
g # Git shortcut
|
||||||
|
.. # Go up directory
|
||||||
|
```
|
||||||
|
|
||||||
|
### Get Help
|
||||||
|
```bash
|
||||||
|
# Show all available commands
|
||||||
|
alias | grep dot
|
||||||
|
|
||||||
|
# Read documentation
|
||||||
|
cat ~/.dotfiles/docs/README.md
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔧 Troubleshooting One-Liners
|
||||||
|
|
||||||
|
### If Installation Fails
|
||||||
|
```bash
|
||||||
|
# Check what went wrong
|
||||||
|
cat ~/.dotfiles/.package.log
|
||||||
|
|
||||||
|
# Try installing packages manually
|
||||||
|
cd ~/.dotfiles && ./install.sh
|
||||||
|
|
||||||
|
# Reset and try again
|
||||||
|
cd ~/.dotfiles && ./reset.sh --soft && ./install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### If Network Issues
|
||||||
|
```bash
|
||||||
|
# Install without GitHub packages
|
||||||
|
curl -fsSL https://raw.githubusercontent.com/your-username/dotfiles/main/install-web.sh | DOTFILES_SKIP_GITHUB=true bash
|
||||||
|
|
||||||
|
# Install without npm packages
|
||||||
|
curl -fsSL https://raw.githubusercontent.com/your-username/dotfiles/main/install-web.sh | DOTFILES_SKIP_NPM=true bash
|
||||||
|
```
|
||||||
|
|
||||||
|
### Manual Installation (If curl fails)
|
||||||
|
```bash
|
||||||
|
# Clone and install manually
|
||||||
|
git clone https://git.turnersrus.com/razzam21/dotfiles ~/.dotfiles
|
||||||
|
cd ~/.dotfiles && chmod +x install.sh && ./install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📋 Platform-Specific One-Liners
|
||||||
|
|
||||||
|
### Ubuntu/Debian
|
||||||
|
```bash
|
||||||
|
# Install prerequisites and dotfiles
|
||||||
|
sudo apt update && sudo apt install -y curl git && curl -fsSL https://raw.git.turnersrus.com/razzam21/dotfiles/dev/install-web.sh | bash
|
||||||
|
```
|
||||||
|
|
||||||
|
### CentOS/RHEL
|
||||||
|
```bash
|
||||||
|
# Install prerequisites and dotfiles
|
||||||
|
sudo yum install -y curl git && curl -fsSL https://raw.git.turnersrus.com/razzam21/dotfiles/dev/install-web.sh | bash
|
||||||
|
```
|
||||||
|
|
||||||
|
### macOS
|
||||||
|
```bash
|
||||||
|
# Install Xcode tools and dotfiles (if needed)
|
||||||
|
xcode-select --install 2>/dev/null || true && curl -fsSL https://raw.git.turnersrus.com/razzam21/dotfiles/dev/install-web.sh | bash
|
||||||
|
```
|
||||||
|
|
||||||
|
### WSL (Windows)
|
||||||
|
```bash
|
||||||
|
# Same as Ubuntu (WSL uses Ubuntu packages)
|
||||||
|
curl -fsSL https://raw.git.turnersrus.com/razzam21/dotfiles/dev/install-web.sh | bash
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🌐 Web Page for Easy Copying
|
||||||
|
|
||||||
|
For the ultimate user experience, host the `WEB_INSTALL_PAGE.html` on your website. Users can then:
|
||||||
|
|
||||||
|
1. **Visit** your installation page
|
||||||
|
2. **Click** the copy button
|
||||||
|
3. **Paste** into their terminal
|
||||||
|
4. **Enjoy** their new dotfiles system
|
||||||
|
|
||||||
|
### Example hosting locations:
|
||||||
|
- `https://your-domain.com/dotfiles`
|
||||||
|
- `https://your-username.github.io/dotfiles`
|
||||||
|
- GitHub Pages, Netlify, Vercel, etc.
|
||||||
|
|
||||||
|
## 🚀 Marketing-Ready Copy-Paste
|
||||||
|
|
||||||
|
### For Social Media
|
||||||
|
```
|
||||||
|
🚀 Transform your terminal in 30 seconds!
|
||||||
|
|
||||||
|
One command installs an intelligent dotfiles system that adapts to your machine type:
|
||||||
|
• Servers get minimal tools
|
||||||
|
• Dev machines get AI assistants
|
||||||
|
• Same shortcuts everywhere
|
||||||
|
|
||||||
|
curl -fsSL https://your-domain.com/install | bash
|
||||||
|
|
||||||
|
#dotfiles #terminal #productivity
|
||||||
|
```
|
||||||
|
|
||||||
|
### For README/Documentation
|
||||||
|
```markdown
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -fsSL https://your-domain.com/install | bash
|
||||||
|
```
|
||||||
|
|
||||||
|
This command will:
|
||||||
|
- Auto-detect your machine type
|
||||||
|
- Install appropriate tools
|
||||||
|
- Set up universal shortcuts
|
||||||
|
- Configure automatic updates
|
||||||
|
```
|
||||||
|
|
||||||
|
### For Email Signatures
|
||||||
|
```
|
||||||
|
P.S. Want a better terminal experience? Try: curl -fsSL https://your-domain.com/install | bash
|
||||||
|
```
|
||||||
|
|
||||||
|
## 💡 Tips for Maximum Adoption
|
||||||
|
|
||||||
|
1. **Use a short URL**: `your-domain.com/install` is easier to remember
|
||||||
|
2. **Host the HTML page**: Visual instructions increase confidence
|
||||||
|
3. **Include security note**: Shows you care about user safety
|
||||||
|
4. **Provide multiple options**: Silent, profile-specific, etc.
|
||||||
|
5. **Make it copyable**: Big copy buttons, clear commands
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*One command. Infinite possibilities. Your new terminal experience is just a paste away.*
|
||||||
395
docs/README.md
Normal file
395
docs/README.md
Normal file
@@ -0,0 +1,395 @@
|
|||||||
|
# Modern Dotfiles Management System
|
||||||
|
|
||||||
|
A comprehensive, intelligent dotfiles management system that provides consistent terminal environments across multiple machines while adapting to different machine types (servers vs development machines).
|
||||||
|
|
||||||
|
## 🎯 Project Overview
|
||||||
|
|
||||||
|
This dotfiles system solves the common problem of maintaining consistent development environments across multiple machines with different purposes. Whether you're working on a minimal server, a full development machine, or anything in between, this system adapts to provide exactly what you need without bloat.
|
||||||
|
|
||||||
|
### Key Problems Solved
|
||||||
|
|
||||||
|
1. **Machine Type Awareness**: Servers don't need Claude AI or Docker, but development machines do
|
||||||
|
2. **Sync Efficiency**: Updates only when needed, not every terminal session
|
||||||
|
3. **Package Management**: Automatically installs and updates tools from multiple sources
|
||||||
|
4. **Configuration Consistency**: Same aliases and shortcuts everywhere
|
||||||
|
5. **Easy Reset**: Can completely restore system to vanilla state
|
||||||
|
|
||||||
|
## 🏗️ Architecture
|
||||||
|
|
||||||
|
```
|
||||||
|
~/.dotfiles/
|
||||||
|
├── install.sh # Main installation script
|
||||||
|
├── sync.sh # Auto-sync with git repository
|
||||||
|
├── reset.sh # Reset to vanilla state
|
||||||
|
├── machine-profiles.yaml # Machine type definitions
|
||||||
|
├── packages.yaml # Package definitions
|
||||||
|
├── bash/ # Bash-specific configurations
|
||||||
|
├── zsh/ # Zsh-specific configurations
|
||||||
|
├── shared/ # Universal configurations
|
||||||
|
├── git/ # Git configuration
|
||||||
|
├── vim/ # Vim configuration
|
||||||
|
├── lib/ # Core libraries
|
||||||
|
└── docs/ # Documentation
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🤖 Machine Profiles
|
||||||
|
|
||||||
|
The system automatically detects and configures based on machine type:
|
||||||
|
|
||||||
|
### Server Profile
|
||||||
|
- **Purpose**: Minimal server setup
|
||||||
|
- **Packages**: `curl`, `git`, `vim`, `sshuttle`, `ripgrep`, `fd`
|
||||||
|
- **Use Case**: Production servers, minimal VMs
|
||||||
|
- **Auto-detection**: SSH connections, systemd services, no GUI
|
||||||
|
|
||||||
|
### Development Profile
|
||||||
|
- **Purpose**: Full development environment
|
||||||
|
- **Packages**: All tools including Claude AI, Gemini CLI, Docker, modern CLI tools
|
||||||
|
- **Use Case**: Primary development machines
|
||||||
|
- **Auto-detection**: Code editors, development directories, Node.js/Python
|
||||||
|
|
||||||
|
### Development Lite Profile
|
||||||
|
- **Purpose**: Development without heavy packages
|
||||||
|
- **Packages**: Development tools but no Docker/containers
|
||||||
|
- **Use Case**: Lightweight VMs, resource-constrained machines
|
||||||
|
- **Auto-detection**: Development tools present but limited resources
|
||||||
|
|
||||||
|
### Personal Profile
|
||||||
|
- **Purpose**: Personal machines with all conveniences
|
||||||
|
- **Packages**: Everything including task management tools
|
||||||
|
- **Use Case**: Personal laptops, home workstations
|
||||||
|
- **Auto-detection**: Personal directories, browsers, GUI environment
|
||||||
|
|
||||||
|
### Minimal Profile
|
||||||
|
- **Purpose**: Absolute bare bones
|
||||||
|
- **Packages**: `curl`, `git`, `vim` only
|
||||||
|
- **Use Case**: Emergency access, extremely limited environments
|
||||||
|
|
||||||
|
## 🔄 Intelligent Sync System
|
||||||
|
|
||||||
|
### Auto-Sync Features
|
||||||
|
- **Daily sync**: Automatically syncs once per day maximum
|
||||||
|
- **Background operation**: Non-blocking terminal startup
|
||||||
|
- **Smart timing**: Won't sync more than once per 24 hours
|
||||||
|
- **Manual override**: Force sync anytime with `dotsync`
|
||||||
|
|
||||||
|
### Update Management
|
||||||
|
- **Efficient checking**: Fast update detection without expensive operations
|
||||||
|
- **Selective updates**: Only updates packages that actually need it
|
||||||
|
- **Cross-source support**: npm, GitHub releases, system packages
|
||||||
|
- **Profile-aware**: Only checks packages relevant to current machine type
|
||||||
|
|
||||||
|
## 📦 Package Management
|
||||||
|
|
||||||
|
### Supported Package Sources
|
||||||
|
1. **System packages**: apt/yum/brew (curl, git, vim, sshuttle)
|
||||||
|
2. **npm packages**: Claude AI, Gemini CLI, Task Master
|
||||||
|
3. **GitHub releases**: Modern CLI tools (bat, ripgrep, fzf, fd, delta)
|
||||||
|
4. **Repository clones**: Tools requiring custom installation
|
||||||
|
5. **Oh My Zsh plugins**: Shell enhancements
|
||||||
|
|
||||||
|
### Installation Methods
|
||||||
|
- **Automatic detection**: OS and package manager detection
|
||||||
|
- **Fallback strategies**: Multiple installation methods per package
|
||||||
|
- **Error handling**: Graceful failures with helpful messages
|
||||||
|
- **Logging**: Detailed installation logs for troubleshooting
|
||||||
|
|
||||||
|
## 🎮 Command Interface
|
||||||
|
|
||||||
|
### Core Commands
|
||||||
|
```bash
|
||||||
|
# Installation and setup
|
||||||
|
./install.sh # Initial setup with profile detection
|
||||||
|
dotstatus # Show sync status and last update
|
||||||
|
dotsync # Manual sync now
|
||||||
|
dotprofile # Show current machine profile
|
||||||
|
|
||||||
|
# Package management
|
||||||
|
dotpkgs # Show package status for current profile
|
||||||
|
dotinstall # Install all packages for current profile
|
||||||
|
dotupdatecheck # Check for package updates (fast)
|
||||||
|
dotupdate # Install pending updates
|
||||||
|
|
||||||
|
# Profile management
|
||||||
|
dotprofileset server # Switch to server profile
|
||||||
|
dotprofiledetect # Re-detect machine type
|
||||||
|
dotprofile # Show current profile status
|
||||||
|
|
||||||
|
# Reset and cleanup
|
||||||
|
dotreset # Interactive reset menu
|
||||||
|
dotresetsoft # Remove configs, restore originals
|
||||||
|
dotresethard # Soft reset + uninstall packages
|
||||||
|
dotresetnuke # Complete removal (back to vanilla)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Universal Aliases (Available on All Machines)
|
||||||
|
```bash
|
||||||
|
# Navigation
|
||||||
|
.. # cd ..
|
||||||
|
... # cd ../..
|
||||||
|
~ # cd ~
|
||||||
|
|
||||||
|
# File operations
|
||||||
|
l # ls -lah
|
||||||
|
ll # ls -l
|
||||||
|
la # ls -la
|
||||||
|
|
||||||
|
# Git shortcuts
|
||||||
|
g # git
|
||||||
|
ga # git add
|
||||||
|
gc # git commit
|
||||||
|
gp # git push
|
||||||
|
gs # git status
|
||||||
|
|
||||||
|
# System monitoring
|
||||||
|
df # df -h
|
||||||
|
free # free -h
|
||||||
|
ps # ps aux
|
||||||
|
|
||||||
|
# Network
|
||||||
|
ports # netstat -tuln
|
||||||
|
myip # curl ifconfig.me
|
||||||
|
|
||||||
|
# Package management (Debian/Ubuntu)
|
||||||
|
apt-update # sudo apt update && sudo apt upgrade
|
||||||
|
apt-install # sudo apt install
|
||||||
|
```
|
||||||
|
|
||||||
|
### Profile-Specific Aliases
|
||||||
|
```bash
|
||||||
|
# Development machines only
|
||||||
|
tm # task-master
|
||||||
|
claude # Claude AI CLI
|
||||||
|
gemini # Gemini CLI
|
||||||
|
|
||||||
|
# SSH tunneling (server + dev)
|
||||||
|
sshuttle-vpn # Base VPN command
|
||||||
|
sshuttle-txtwire # Specific VPN connection
|
||||||
|
```
|
||||||
|
|
||||||
|
### Git Remote URL Conversion
|
||||||
|
The system includes convenient functions to convert git remote URLs between SSH and HTTPS formats:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Automatic conversion (detects current format and converts to opposite)
|
||||||
|
git-remote-toggle # Toggle between SSH/HTTPS for origin
|
||||||
|
git-remote-toggle upstream # Toggle for specific remote
|
||||||
|
|
||||||
|
# Convert to specific format
|
||||||
|
git-remote-ssh # Convert origin to SSH format
|
||||||
|
git-remote-https # Convert origin to HTTPS format
|
||||||
|
git-remote-ssh upstream # Convert specific remote to SSH
|
||||||
|
|
||||||
|
# Advanced usage with confirmation prompts
|
||||||
|
git-convert origin ssh # Convert origin to SSH with confirmation
|
||||||
|
git-convert origin https # Convert origin to HTTPS with confirmation
|
||||||
|
```
|
||||||
|
|
||||||
|
**Supported URL formats:**
|
||||||
|
- SSH: `git@github.com:user/repo.git`
|
||||||
|
- HTTPS: `https://github.com/user/repo.git`
|
||||||
|
- HTTPS (no .git): `https://github.com/user/repo`
|
||||||
|
|
||||||
|
**Example usage:**
|
||||||
|
```bash
|
||||||
|
# Check current remote
|
||||||
|
git remote -v
|
||||||
|
# origin https://github.com/user/repo.git (fetch)
|
||||||
|
# origin https://github.com/user/repo.git (push)
|
||||||
|
|
||||||
|
# Convert to SSH
|
||||||
|
git-remote-ssh
|
||||||
|
# 🔄 Converting git remote 'origin'
|
||||||
|
# From (https): https://github.com/user/repo.git
|
||||||
|
# To (ssh): git@github.com:user/repo.git
|
||||||
|
# Proceed with conversion? [y/N]: y
|
||||||
|
# ✅ Successfully converted remote 'origin'
|
||||||
|
|
||||||
|
# Toggle back to HTTPS
|
||||||
|
git-remote-toggle
|
||||||
|
# 🔄 Converting git remote 'origin'
|
||||||
|
# From (ssh): git@github.com:user/repo.git
|
||||||
|
# To (https): https://github.com/user/repo.git
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔧 Technical Implementation
|
||||||
|
|
||||||
|
### Profile Detection Algorithm
|
||||||
|
The system uses a scoring algorithm to detect machine type:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Server indicators (weight)
|
||||||
|
- systemd active (30 points)
|
||||||
|
- SSH connection (25 points)
|
||||||
|
- Multi-user target (20 points)
|
||||||
|
- No logged users (10 points)
|
||||||
|
|
||||||
|
# Development indicators
|
||||||
|
- Development tools present (30 points)
|
||||||
|
- Code editor available (25 points)
|
||||||
|
- Dev directories exist (20 points)
|
||||||
|
- GUI environment (15 points)
|
||||||
|
|
||||||
|
# Personal indicators
|
||||||
|
- Personal directories (20 points)
|
||||||
|
- Browser available (25 points)
|
||||||
|
- Personal home path (15 points)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Update Checking Strategy
|
||||||
|
```bash
|
||||||
|
# Fast check methods
|
||||||
|
npm outdated -g --json # No installs, just version comparison
|
||||||
|
GitHub API calls # Latest release info
|
||||||
|
Local version parsing # Current installed versions
|
||||||
|
|
||||||
|
# Selective updates
|
||||||
|
Only outdated packages # Skip up-to-date ones
|
||||||
|
Profile filtering # Server won't check Claude/Gemini
|
||||||
|
Batch operations # Update multiple efficiently
|
||||||
|
```
|
||||||
|
|
||||||
|
### Sync Optimization
|
||||||
|
```bash
|
||||||
|
# Timing controls
|
||||||
|
24-hour auto-sync limit # Prevent excessive git operations
|
||||||
|
5-minute manual override # Allow frequent manual syncing
|
||||||
|
Background execution # Non-blocking terminal startup
|
||||||
|
|
||||||
|
# Change detection
|
||||||
|
Git fetch + compare # Check for remote changes
|
||||||
|
Local diff detection # Handle local modifications
|
||||||
|
Automatic stash/restore # Preserve local changes
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🛡️ Safety Features
|
||||||
|
|
||||||
|
### Backup System
|
||||||
|
- **Pre-installation backup**: All existing configs saved
|
||||||
|
- **Timestamped backups**: Never overwrites previous backups
|
||||||
|
- **Symlink detection**: Preserves existing dotfiles setups
|
||||||
|
- **Restoration capability**: Can restore original configs
|
||||||
|
|
||||||
|
### Reset Capabilities
|
||||||
|
- **Soft reset**: Remove dotfiles, restore originals
|
||||||
|
- **Hard reset**: Also uninstall packages
|
||||||
|
- **Nuclear reset**: Complete removal
|
||||||
|
- **Safety prompts**: Confirmation for destructive operations
|
||||||
|
|
||||||
|
### Error Handling
|
||||||
|
- **Graceful failures**: Continue on non-critical errors
|
||||||
|
- **Detailed logging**: All operations logged with timestamps
|
||||||
|
- **Rollback capability**: Can undo changes if needed
|
||||||
|
- **Dependency checking**: Verify requirements before installation
|
||||||
|
|
||||||
|
## 📈 Performance Characteristics
|
||||||
|
|
||||||
|
### Startup Time
|
||||||
|
- **Cold start**: ~2 seconds (first terminal of day with sync)
|
||||||
|
- **Warm start**: ~0.1 seconds (subsequent terminals)
|
||||||
|
- **Background sync**: Non-blocking, invisible to user
|
||||||
|
|
||||||
|
### Update Efficiency
|
||||||
|
- **Traditional approach**: `npm update -g` (30-60 seconds)
|
||||||
|
- **Smart checking**: `dotupdatecheck` (2-5 seconds)
|
||||||
|
- **Selective updates**: Only outdated packages (10-20 seconds)
|
||||||
|
|
||||||
|
### Resource Usage
|
||||||
|
- **Memory footprint**: Minimal (shell functions only)
|
||||||
|
- **Disk usage**: ~50MB for full dev profile
|
||||||
|
- **Network usage**: Efficient API calls, cached results
|
||||||
|
|
||||||
|
## 🎯 Use Cases
|
||||||
|
|
||||||
|
### Scenario 1: DevOps Engineer
|
||||||
|
**Need**: Consistent tools across 20+ servers and 3 development machines
|
||||||
|
|
||||||
|
**Solution**:
|
||||||
|
- Servers get `server` profile (minimal, essential tools only)
|
||||||
|
- Development machines get `dev` profile (full toolchain)
|
||||||
|
- Same aliases and shortcuts everywhere
|
||||||
|
- Auto-sync keeps everything updated
|
||||||
|
|
||||||
|
### Scenario 2: Full-Stack Developer
|
||||||
|
**Need**: Rich development environment that's portable
|
||||||
|
|
||||||
|
**Solution**:
|
||||||
|
- `personal` profile on main machine (everything)
|
||||||
|
- `dev-lite` profile on cloud VMs (no Docker overhead)
|
||||||
|
- Universal shortcuts for Git, navigation, system monitoring
|
||||||
|
- Automatic package updates
|
||||||
|
|
||||||
|
### Scenario 3: System Administrator
|
||||||
|
**Need**: Minimal, secure server environments
|
||||||
|
|
||||||
|
**Solution**:
|
||||||
|
- `server` or `minimal` profiles
|
||||||
|
- Essential tools only (no AI assistants, development tools)
|
||||||
|
- Same navigation and system aliases
|
||||||
|
- Easy reset to vanilla if needed
|
||||||
|
|
||||||
|
## 🚀 Getting Started
|
||||||
|
|
||||||
|
### Quick Start
|
||||||
|
```bash
|
||||||
|
# Clone the repository
|
||||||
|
cd ~
|
||||||
|
git clone <repository-url> .dotfiles
|
||||||
|
cd .dotfiles
|
||||||
|
|
||||||
|
# Run installation (will auto-detect machine type)
|
||||||
|
chmod +x install.sh
|
||||||
|
./install.sh
|
||||||
|
|
||||||
|
# Restart shell or source configs
|
||||||
|
exec $SHELL
|
||||||
|
```
|
||||||
|
|
||||||
|
### Customization
|
||||||
|
```bash
|
||||||
|
# Change machine profile
|
||||||
|
dotprofileset dev-lite
|
||||||
|
dotinstall
|
||||||
|
|
||||||
|
# Add custom aliases
|
||||||
|
vim ~/.dotfiles/shared/aliases
|
||||||
|
|
||||||
|
# Sync changes across machines
|
||||||
|
git add -A && git commit -m "Custom aliases"
|
||||||
|
git push
|
||||||
|
```
|
||||||
|
|
||||||
|
### Advanced Configuration
|
||||||
|
```bash
|
||||||
|
# Disable auto-sync
|
||||||
|
dotsoff
|
||||||
|
|
||||||
|
# Force profile re-detection
|
||||||
|
dotprofiledetect
|
||||||
|
|
||||||
|
# Check what packages would be installed
|
||||||
|
dotpkgs
|
||||||
|
|
||||||
|
# Reset to clean state
|
||||||
|
dotreset
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🤝 Contributing
|
||||||
|
|
||||||
|
This system is designed to be easily extensible:
|
||||||
|
|
||||||
|
1. **Add new packages**: Update `packages.yaml` and profile definitions
|
||||||
|
2. **Create new profiles**: Add to `machine-profiles.yaml`
|
||||||
|
3. **Extend functionality**: Add functions to `shared/functions`
|
||||||
|
4. **Improve detection**: Enhance profile detection logic
|
||||||
|
|
||||||
|
## 📚 Additional Resources
|
||||||
|
|
||||||
|
- [Installation Guide](INSTALLATION.md)
|
||||||
|
- [Configuration Reference](CONFIGURATION.md)
|
||||||
|
- [Troubleshooting Guide](TROUBLESHOOTING.md)
|
||||||
|
- [API Reference](API.md)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*This dotfiles system represents a modern approach to configuration management, balancing automation with flexibility, and efficiency with comprehensive functionality.*
|
||||||
473
docs/WEB_INSTALL_PAGE.html
Normal file
473
docs/WEB_INSTALL_PAGE.html
Normal file
@@ -0,0 +1,473 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Modern Dotfiles Management System - One-Line Install</title>
|
||||||
|
<style>
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
|
||||||
|
background: linear-gradient(135deg, #0f1419 0%, #1a2332 100%);
|
||||||
|
color: #e6e6e6;
|
||||||
|
line-height: 1.6;
|
||||||
|
min-height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header {
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
font-size: 2.5rem;
|
||||||
|
color: #64ffda;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
text-shadow: 0 0 20px rgba(100, 255, 218, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.subtitle {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
color: #8892b0;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.install-section {
|
||||||
|
background: rgba(255, 255, 255, 0.05);
|
||||||
|
border: 1px solid rgba(100, 255, 218, 0.2);
|
||||||
|
border-radius: 12px;
|
||||||
|
padding: 2rem;
|
||||||
|
margin: 2rem 0;
|
||||||
|
backdrop-filter: blur(10px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.install-title {
|
||||||
|
color: #64ffda;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.install-code {
|
||||||
|
background: #0d1117;
|
||||||
|
border: 1px solid #30363d;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 1.5rem;
|
||||||
|
margin: 1rem 0;
|
||||||
|
position: relative;
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.install-code code {
|
||||||
|
color: #e6e6e6;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy-button {
|
||||||
|
position: absolute;
|
||||||
|
top: 1rem;
|
||||||
|
right: 1rem;
|
||||||
|
background: #238636;
|
||||||
|
color: white;
|
||||||
|
border: none;
|
||||||
|
border-radius: 6px;
|
||||||
|
padding: 0.5rem 1rem;
|
||||||
|
cursor: pointer;
|
||||||
|
font-family: inherit;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
transition: all 0.2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy-button:hover {
|
||||||
|
background: #2ea043;
|
||||||
|
transform: translateY(-1px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy-button.copied {
|
||||||
|
background: #64ffda;
|
||||||
|
color: #0f1419;
|
||||||
|
}
|
||||||
|
|
||||||
|
.features-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
||||||
|
gap: 2rem;
|
||||||
|
margin: 3rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.feature-card {
|
||||||
|
background: rgba(255, 255, 255, 0.05);
|
||||||
|
border: 1px solid rgba(139, 146, 176, 0.2);
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 1.5rem;
|
||||||
|
transition: transform 0.2s, border-color 0.2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.feature-card:hover {
|
||||||
|
transform: translateY(-2px);
|
||||||
|
border-color: rgba(100, 255, 218, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.feature-title {
|
||||||
|
color: #64ffda;
|
||||||
|
font-size: 1.2rem;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.feature-description {
|
||||||
|
color: #8892b0;
|
||||||
|
font-size: 0.95rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profiles-section {
|
||||||
|
margin: 3rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
||||||
|
gap: 1.5rem;
|
||||||
|
margin-top: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile-card {
|
||||||
|
background: rgba(255, 255, 255, 0.03);
|
||||||
|
border: 1px solid rgba(139, 146, 176, 0.15);
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile-name {
|
||||||
|
color: #ff6b6b;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile-use-case {
|
||||||
|
color: #64ffda;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile-packages {
|
||||||
|
color: #8892b0;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
line-height: 1.4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.quick-start {
|
||||||
|
background: linear-gradient(135deg, rgba(100, 255, 218, 0.1) 0%, rgba(255, 107, 107, 0.1) 100%);
|
||||||
|
border: 1px solid rgba(100, 255, 218, 0.3);
|
||||||
|
border-radius: 12px;
|
||||||
|
padding: 2rem;
|
||||||
|
margin: 3rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.demo-steps {
|
||||||
|
margin: 2rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.demo-step {
|
||||||
|
background: rgba(0, 0, 0, 0.3);
|
||||||
|
border-left: 4px solid #64ffda;
|
||||||
|
padding: 1rem;
|
||||||
|
margin: 1rem 0;
|
||||||
|
border-radius: 0 8px 8px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.demo-step-title {
|
||||||
|
color: #64ffda;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.demo-step-command {
|
||||||
|
background: #0d1117;
|
||||||
|
padding: 0.5rem;
|
||||||
|
border-radius: 4px;
|
||||||
|
margin: 0.5rem 0;
|
||||||
|
font-family: monospace;
|
||||||
|
color: #e6e6e6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.emoji {
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning {
|
||||||
|
background: rgba(255, 193, 7, 0.1);
|
||||||
|
border: 1px solid rgba(255, 193, 7, 0.3);
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 1rem;
|
||||||
|
margin: 1rem 0;
|
||||||
|
color: #ffc107;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.container {
|
||||||
|
padding: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
font-size: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.install-code code {
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy-button {
|
||||||
|
position: static;
|
||||||
|
margin-top: 1rem;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<div class="header">
|
||||||
|
<h1 class="title"><span class="emoji">🚀</span> Modern Dotfiles Management System</h1>
|
||||||
|
<p class="subtitle">Intelligent, adaptive terminal configuration that thinks for itself</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="install-section">
|
||||||
|
<h2 class="install-title"><span class="emoji">⚡</span> One-Line Installation</h2>
|
||||||
|
<p style="margin-bottom: 1rem; color: #8892b0;">Copy and paste this command into your terminal:</p>
|
||||||
|
|
||||||
|
<div class="install-code">
|
||||||
|
<code id="install-command">curl -fsSL https://raw.git.turnersrus.com/razzam21/dotfiles/dev/install-web.sh | bash</code>
|
||||||
|
<button class="copy-button" onclick="copyToClipboard('install-command', this)">Copy</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="warning">
|
||||||
|
<strong><span class="emoji">⚠️</span> Security Note:</strong> Always review scripts before running them. You can inspect the installer at:
|
||||||
|
<a href="https://raw.git.turnersrus.com/razzam21/dotfiles/dev/install-web.sh" style="color: #64ffda;">install-web.sh</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="quick-start">
|
||||||
|
<h2 class="install-title"><span class="emoji">🎯</span> What Happens Next</h2>
|
||||||
|
<div class="demo-steps">
|
||||||
|
<div class="demo-step">
|
||||||
|
<div class="demo-step-title">1. <span class="emoji">🔍</span> Auto-Detection</div>
|
||||||
|
<p>System analyzes your machine and suggests the best profile (server, dev, personal, etc.)</p>
|
||||||
|
</div>
|
||||||
|
<div class="demo-step">
|
||||||
|
<div class="demo-step-title">2. <span class="emoji">📦</span> Smart Installation</div>
|
||||||
|
<p>Installs only the packages you need based on your machine type</p>
|
||||||
|
</div>
|
||||||
|
<div class="demo-step">
|
||||||
|
<div class="demo-step-title">3. <span class="emoji">🔗</span> Configuration</div>
|
||||||
|
<p>Sets up universal aliases and shortcuts that work everywhere</p>
|
||||||
|
</div>
|
||||||
|
<div class="demo-step">
|
||||||
|
<div class="demo-step-title">4. <span class="emoji">✅</span> Ready to Use</div>
|
||||||
|
<p>Restart your shell and enjoy your new supercharged terminal</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="profiles-section">
|
||||||
|
<h2 class="install-title"><span class="emoji">🤖</span> Adaptive Machine Profiles</h2>
|
||||||
|
<p style="margin-bottom: 2rem; color: #8892b0;">The system automatically detects your machine type and installs appropriate tools:</p>
|
||||||
|
|
||||||
|
<div class="profile-grid">
|
||||||
|
<div class="profile-card">
|
||||||
|
<div class="profile-name"><span class="emoji">🖥️</span> Server</div>
|
||||||
|
<div class="profile-use-case">Production servers, minimal VMs</div>
|
||||||
|
<div class="profile-packages">
|
||||||
|
<strong>Packages:</strong> curl, git, vim, sshuttle, ripgrep, fd<br>
|
||||||
|
<strong>Perfect for:</strong> System administration, log analysis
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="profile-card">
|
||||||
|
<div class="profile-name"><span class="emoji">💻</span> Development</div>
|
||||||
|
<div class="profile-use-case">Full development machines</div>
|
||||||
|
<div class="profile-packages">
|
||||||
|
<strong>Packages:</strong> All tools + Claude AI, Gemini CLI, Docker, modern CLI tools<br>
|
||||||
|
<strong>Perfect for:</strong> Primary development workstations
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="profile-card">
|
||||||
|
<div class="profile-name"><span class="emoji">⚡</span> Dev-Lite</div>
|
||||||
|
<div class="profile-use-case">Lightweight development</div>
|
||||||
|
<div class="profile-packages">
|
||||||
|
<strong>Packages:</strong> Development tools without heavy packages<br>
|
||||||
|
<strong>Perfect for:</strong> Cloud VMs, resource-constrained machines
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="profile-card">
|
||||||
|
<div class="profile-name"><span class="emoji">🏠</span> Personal</div>
|
||||||
|
<div class="profile-use-case">Personal machines</div>
|
||||||
|
<div class="profile-packages">
|
||||||
|
<strong>Packages:</strong> Everything + personal productivity tools<br>
|
||||||
|
<strong>Perfect for:</strong> Personal laptops, home workstations
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="profile-card">
|
||||||
|
<div class="profile-name"><span class="emoji">🔧</span> Minimal</div>
|
||||||
|
<div class="profile-use-case">Bare essentials</div>
|
||||||
|
<div class="profile-packages">
|
||||||
|
<strong>Packages:</strong> curl, git, vim only<br>
|
||||||
|
<strong>Perfect for:</strong> Emergency access, extremely limited environments
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="features-grid">
|
||||||
|
<div class="feature-card">
|
||||||
|
<div class="feature-title"><span class="emoji">🎯</span> Smart Package Management</div>
|
||||||
|
<div class="feature-description">
|
||||||
|
Automatically installs packages from npm, GitHub releases, and system repositories.
|
||||||
|
Only installs what you need based on your machine type.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="feature-card">
|
||||||
|
<div class="feature-title"><span class="emoji">🔄</span> Intelligent Sync</div>
|
||||||
|
<div class="feature-description">
|
||||||
|
Daily auto-sync with rate limiting. Updates only when needed, runs in background
|
||||||
|
to avoid blocking terminal startup.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="feature-card">
|
||||||
|
<div class="feature-title"><span class="emoji">⚡</span> Fast Updates</div>
|
||||||
|
<div class="feature-description">
|
||||||
|
Efficient update checking (2-5 seconds) vs traditional npm update (30-60 seconds).
|
||||||
|
Only updates packages that actually need it.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="feature-card">
|
||||||
|
<div class="feature-title"><span class="emoji">🌍</span> Universal Shortcuts</div>
|
||||||
|
<div class="feature-description">
|
||||||
|
Same aliases and shortcuts work on all machines. Navigate, manage files,
|
||||||
|
and use git with consistent commands everywhere.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="feature-card">
|
||||||
|
<div class="feature-title"><span class="emoji">🛡️</span> Safe Reset</div>
|
||||||
|
<div class="feature-description">
|
||||||
|
Complete reset capability back to vanilla state. Multiple reset levels
|
||||||
|
with automatic backups for peace of mind.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="feature-card">
|
||||||
|
<div class="feature-title"><span class="emoji">🔧</span> Cross-Platform</div>
|
||||||
|
<div class="feature-description">
|
||||||
|
Works on Linux (Ubuntu, CentOS, Debian), macOS, and WSL.
|
||||||
|
Automatically detects OS and uses appropriate package managers.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="install-section">
|
||||||
|
<h2 class="install-title"><span class="emoji">🎮</span> Quick Commands You'll Love</h2>
|
||||||
|
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 1rem; margin-top: 1rem;">
|
||||||
|
<div>
|
||||||
|
<h4 style="color: #64ffda; margin-bottom: 0.5rem;">Universal Navigation</h4>
|
||||||
|
<div class="demo-step-command">l # Enhanced ls -lah</div>
|
||||||
|
<div class="demo-step-command">.. # cd ..</div>
|
||||||
|
<div class="demo-step-command">... # cd ../..</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h4 style="color: #64ffda; margin-bottom: 0.5rem;">Git Shortcuts</h4>
|
||||||
|
<div class="demo-step-command">g # git</div>
|
||||||
|
<div class="demo-step-command">gs # git status</div>
|
||||||
|
<div class="demo-step-command">ga # git add</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h4 style="color: #64ffda; margin-bottom: 0.5rem;">System Management</h4>
|
||||||
|
<div class="demo-step-command">dotstatus # Show system status</div>
|
||||||
|
<div class="demo-step-command">dotupdate # Update packages</div>
|
||||||
|
<div class="demo-step-command">dotprofile # Show machine profile</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h4 style="color: #64ffda; margin-bottom: 0.5rem;">Development Tools</h4>
|
||||||
|
<div class="demo-step-command">claude # Claude AI CLI</div>
|
||||||
|
<div class="demo-step-command">tm # Task Master</div>
|
||||||
|
<div class="demo-step-command">ports # Show open ports</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="install-section">
|
||||||
|
<h2 class="install-title"><span class="emoji">🚀</span> Ready to Get Started?</h2>
|
||||||
|
<p style="margin-bottom: 1rem; color: #8892b0;">Copy the command above and paste it into your terminal. Installation takes about 30 seconds.</p>
|
||||||
|
|
||||||
|
<div class="install-code">
|
||||||
|
<code id="install-command-2">curl -fsSL https://raw.git.turnersrus.com/razzam21/dotfiles/dev/install-web.sh | bash</code>
|
||||||
|
<button class="copy-button" onclick="copyToClipboard('install-command-2', this)">Copy</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p style="margin-top: 1rem; color: #8892b0; font-size: 0.9rem;">
|
||||||
|
<span class="emoji">📚</span> <strong>Want to learn more first?</strong>
|
||||||
|
Check out the <a href="https://git.turnersrus.com/razzam21/dotfiles" style="color: #64ffda;">Git repository</a>
|
||||||
|
for full documentation and source code.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function copyToClipboard(elementId, button) {
|
||||||
|
const element = document.getElementById(elementId);
|
||||||
|
const text = element.textContent;
|
||||||
|
|
||||||
|
navigator.clipboard.writeText(text).then(function() {
|
||||||
|
button.textContent = 'Copied!';
|
||||||
|
button.classList.add('copied');
|
||||||
|
|
||||||
|
setTimeout(function() {
|
||||||
|
button.textContent = 'Copy';
|
||||||
|
button.classList.remove('copied');
|
||||||
|
}, 2000);
|
||||||
|
}, function(err) {
|
||||||
|
console.error('Could not copy text: ', err);
|
||||||
|
// Fallback for older browsers
|
||||||
|
const textarea = document.createElement('textarea');
|
||||||
|
textarea.value = text;
|
||||||
|
document.body.appendChild(textarea);
|
||||||
|
textarea.select();
|
||||||
|
document.execCommand('copy');
|
||||||
|
document.body.removeChild(textarea);
|
||||||
|
|
||||||
|
button.textContent = 'Copied!';
|
||||||
|
button.classList.add('copied');
|
||||||
|
|
||||||
|
setTimeout(function() {
|
||||||
|
button.textContent = 'Copy';
|
||||||
|
button.classList.remove('copied');
|
||||||
|
}, 2000);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Reference in New Issue
Block a user