# Install YADM (Yet Another Dotfiles Manager) You are helping the user install and set up YADM for managing their dotfiles. ## Your tasks: 1. **Check if YADM is already installed:** - Check: `which yadm` - If installed: `yadm version` - If already installed, ask the user if they want to: - Configure it for first use - Upgrade to the latest version - Or exit 2. **Install YADM:** **Option 1: Using apt (recommended for Ubuntu):** ```bash sudo apt update sudo apt install yadm ``` **Option 2: Using the install script (for latest version):** ```bash curl -fsSL https://github.com/TheLocehiliosan/yadm/raw/master/bootstrap/install_yadm.sh | sudo bash ``` Ask the user which installation method they prefer. 3. **Verify installation:** - Check version: `yadm version` - Check location: `which yadm` 4. **Initialize YADM (if user wants to set it up):** **For new setup:** ```bash yadm init ``` **For cloning existing dotfiles:** Ask the user if they have an existing dotfiles repository to clone. If yes, get the repository URL and run: ```bash yadm clone ``` 5. **Guide the user through initial configuration:** **Add existing dotfiles:** Suggest common dotfiles to track: - `~/.bashrc` - `~/.bash_profile` - `~/.profile` - `~/.gitconfig` - `~/.ssh/config` (if exists) - `~/.config/` directories (ask which ones) Show how to add files: ```bash yadm add ~/.bashrc yadm add ~/.gitconfig yadm commit -m "Initial dotfiles commit" ``` 6. **Set up remote repository (if user wants):** Ask if they want to set up a remote repository: ```bash yadm remote add origin yadm push -u origin main ``` 7. **Explain basic YADM usage:** - `yadm status` - Check status - `yadm add ` - Track a file - `yadm commit -m "message"` - Commit changes - `yadm push` - Push to remote - `yadm pull` - Pull from remote - `yadm list` - List tracked files - `yadm diff` - Show differences 8. **Set up encryption (optional):** Ask if the user wants to encrypt sensitive files: ```bash echo ".ssh/id_rsa" >> ~/.config/yadm/encrypt yadm encrypt ``` 9. **Set up bootstrap (optional):** Explain that YADM can run a bootstrap script on new systems. Offer to create a basic `~/.config/yadm/bootstrap` script: ```bash #!/bin/bash # Install common packages sudo apt update sudo apt install -y git vim tmux ``` 10. **Provide next steps and best practices:** - Regularly commit dotfile changes: `yadm add -u && yadm commit -m "Update dotfiles"` - Use branches for experimental configurations - Use `.config/yadm/encrypt` for sensitive files - Consider alternate files for different systems (using YADM's alternate file feature) - Backup remote repository (GitHub/GitLab) ## Important notes: - Ask before making any commits or pushes - Explain the difference between YADM and regular git (YADM operates on $HOME) - Warn about not committing sensitive information unencrypted - If user already has dotfiles in a git repo, explain migration process - Be clear that YADM commands work like git commands