Convert Figma logo to code with AI

yadm-dev logoyadm

Yet Another Dotfiles Manager

5,351
178
5,351
53

Top Related Projects

13,611

Manage your dotfiles across multiple diverse machines, securely.

7,163

A tool that bootstraps your dotfiles ⚡️

3,134

rc file (dotfile) management

2,198

config manager based on Git

14,656

Keep your application settings in sync (OS X/Linux)

📦 Bundler for non-Ruby dependencies from Homebrew, Homebrew Cask and the Mac App Store.

Quick Overview

YADM (Yet Another Dotfile Manager) is a tool for managing dotfiles across multiple systems. It uses Git as its core technology and extends Git's functionality to provide additional features specifically for dotfile management. YADM allows users to maintain a single repository of dotfiles that can be shared across multiple computers with different configurations.

Pros

  • Seamless integration with Git, leveraging existing version control knowledge
  • Support for system-specific configurations through alternate files
  • Encryption capabilities for sensitive data
  • Bootstrapping feature for easy setup on new systems

Cons

  • Steeper learning curve compared to simpler dotfile management solutions
  • Requires Git knowledge for optimal usage
  • May be overkill for users with simple dotfile needs
  • Limited GUI options, primarily command-line based

Getting Started

To get started with YADM:

  1. Install YADM:

    # On macOS with Homebrew
    brew install yadm
    
    # On Ubuntu/Debian
    sudo apt-get install yadm
    
  2. Initialize YADM:

    yadm init
    yadm add <important-dotfile>
    yadm commit -m "Initial commit"
    
  3. Clone existing dotfiles on a new system:

    yadm clone <url-to-your-dotfiles-repository>
    yadm status
    

For more detailed instructions and advanced usage, refer to the official YADM documentation.

Competitor Comparisons

13,611

Manage your dotfiles across multiple diverse machines, securely.

Pros of chezmoi

  • Built-in encryption support for sensitive data
  • Template-based configuration for managing different environments
  • Extensive documentation and active community support

Cons of chezmoi

  • Steeper learning curve due to more complex configuration
  • Requires explicit initialization and management of dotfiles

Code comparison

yadm:

yadm init
yadm add .vimrc
yadm commit -m "Add .vimrc"
yadm push

chezmoi:

chezmoi init
chezmoi add ~/.vimrc
chezmoi git commit -m "Add .vimrc"
chezmoi git push

Both tools use similar Git-like commands for managing dotfiles, but chezmoi requires explicit initialization and uses a separate directory for managing files. yadm operates directly on the home directory, while chezmoi uses a source directory and applies changes to the home directory.

chezmoi offers more advanced features like templating and encryption, which can be beneficial for complex setups or managing sensitive information across multiple machines. However, this comes at the cost of a more complex configuration process.

yadm provides a simpler approach, treating dotfiles as a Git repository in the home directory, which can be easier for users familiar with Git. It lacks some of the advanced features of chezmoi but offers a more straightforward experience for basic dotfile management.

7,163

A tool that bootstraps your dotfiles ⚡️

Pros of Dotbot

  • Flexible configuration using YAML or JSON
  • Plugin system for extending functionality
  • Cross-platform compatibility (Linux, macOS, Windows)

Cons of Dotbot

  • Requires Python installation
  • More complex setup process
  • Less intuitive for users unfamiliar with YAML/JSON

Code Comparison

Dotbot configuration (YAML):

- link:
    ~/.vimrc: vimrc
    ~/.zshrc: zshrc
- shell:
    - [git submodule update --init --recursive, Installing submodules]

Yadm configuration (shell script):

yadm clone https://github.com/username/dotfiles.git
yadm status
yadm add .vimrc .zshrc
yadm commit -m "Initial commit"
yadm push

Key Differences

  • Dotbot uses a configuration file to define actions, while Yadm uses Git commands directly
  • Dotbot offers more granular control over linking and shell commands
  • Yadm integrates more seamlessly with Git workflows and version control

Use Cases

  • Dotbot: Ideal for users who prefer a structured configuration approach and need extensibility
  • Yadm: Better suited for users familiar with Git and seeking a simpler, Git-centric dotfile management solution

Both tools effectively manage dotfiles, but cater to different user preferences and workflows.

3,134

rc file (dotfile) management

Pros of rcm

  • Simpler and more lightweight approach to dotfile management
  • Easier to understand and use for beginners
  • Supports multiple "host-specific" configurations out of the box

Cons of rcm

  • Less flexible for complex setups or advanced users
  • Limited built-in features compared to yadm's extensive functionality
  • Lacks native support for encryption or version control integration

Code Comparison

rcm:

lsrc
mkrc ~/.vimrc
rcup

yadm:

yadm init
yadm add ~/.vimrc
yadm commit -m "Add vimrc"
yadm push

rcm focuses on simplicity, using separate commands for listing, creating, and updating dotfiles. yadm, on the other hand, follows a Git-like workflow, making it more familiar for users comfortable with version control systems.

rcm is better suited for users who prefer a straightforward approach to managing dotfiles across multiple machines. yadm offers more advanced features and flexibility, making it ideal for power users or those with complex dotfile setups.

Both tools effectively manage dotfiles, but they cater to different user preferences and needs. The choice between rcm and yadm ultimately depends on the user's experience level and desired complexity in their dotfile management workflow.

2,198

config manager based on Git

Pros of vcsh

  • Allows managing multiple repositories independently
  • Provides more granular control over dotfile organization
  • Supports using different version control systems for different config sets

Cons of vcsh

  • Steeper learning curve and more complex setup
  • Requires manual conflict resolution when configs overlap
  • Less intuitive for users new to version control systems

Code Comparison

vcsh:

vcsh init myconfig
vcsh myconfig add ~/.vimrc
vcsh myconfig commit -m "Add vimrc"
vcsh myconfig push

yadm:

yadm init
yadm add ~/.vimrc
yadm commit -m "Add vimrc"
yadm push

Both tools use Git-like commands, but vcsh requires specifying the repository name for each operation, while yadm simplifies the process by managing a single repository.

vcsh offers more flexibility for advanced users who want to manage multiple repositories, while yadm provides a more straightforward approach for those who prefer a single repository for all dotfiles. The choice between the two depends on the user's specific needs and level of experience with version control systems.

14,656

Keep your application settings in sync (OS X/Linux)

Pros of Mackup

  • Supports a wide range of applications and tools out-of-the-box
  • Utilizes cloud storage services for syncing, making it easier to share across multiple devices
  • Provides a simple command-line interface for backing up and restoring configurations

Cons of Mackup

  • Less flexible for managing custom dotfiles or configurations not included in its supported list
  • Relies on third-party cloud storage services, which may raise privacy concerns for some users
  • Limited version control capabilities compared to Git-based solutions

Code Comparison

Mackup:

def copy(self, source, destination):
    """Copy a file or a folder from source to destination."""
    if os.path.isdir(source):
        shutil.copytree(source, destination)
    else:
        shutil.copy(source, destination)

YADM:

function copy_files() {
  local src="$1"
  local dst="$2"
  mkdir -p "${dst%/*}"
  if [[ -d "$src" ]]; then
    cp -R "$src" "$dst"
  else
    cp "$src" "$dst"
  fi
}

Both projects aim to simplify dotfile management, but they take different approaches. Mackup focuses on application-specific configurations and cloud syncing, while YADM provides a more Git-centric, flexible solution for managing dotfiles and system configurations.

📦 Bundler for non-Ruby dependencies from Homebrew, Homebrew Cask and the Mac App Store.

Pros of homebrew-bundle

  • Focused specifically on managing Homebrew packages and casks
  • Integrates seamlessly with Homebrew ecosystem
  • Simpler setup for users already familiar with Homebrew

Cons of homebrew-bundle

  • Limited to macOS and Linux systems that use Homebrew
  • Doesn't handle dotfiles or general configuration management
  • Less flexible for managing non-Homebrew software or system settings

Code Comparison

yadm:

yadm init
yadm add .vimrc
yadm commit -m "Add .vimrc"
yadm push

homebrew-bundle:

brew bundle dump
git add Brewfile
git commit -m "Add Brewfile"
git push

Summary

yadm is a dotfile manager that can handle various configuration files and supports multiple operating systems. It offers more flexibility in managing system configurations but may have a steeper learning curve.

homebrew-bundle focuses on managing Homebrew packages and casks, making it simpler for users already familiar with Homebrew. However, it's limited to Homebrew-compatible systems and doesn't handle general configuration management.

Choose yadm for comprehensive dotfile management across different platforms, or homebrew-bundle for a streamlined Homebrew package management solution on macOS and Linux.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

yadm - Yet Another Dotfiles Manager

Latest Version Homebrew Version OBS Version Arch Version License
Master Update Develop Update Website Update
Master Status Develop Status GH Pages Status Dev Pages Status

https://yadm.io/

yadm is a tool for managing dotfiles.

Complete features, usage, examples and installation instructions can be found on the yadm.io website.

A very quick tour

# Initialize a new repository
yadm init

# Clone an existing repository
yadm clone <url>

# Add files/changes
yadm add <important file>
yadm commit

# Encrypt your ssh key
echo '.ssh/id_rsa' > ~/.config/yadm/encrypt
yadm encrypt

# Later, decrypt your ssh key
yadm decrypt

# Create different files for Linux vs MacOS
yadm add path/file.cfg##os.Linux
yadm add path/file.cfg##os.Darwin

If you enjoy using yadm, consider adding a star to the repository on GitHub. The star count helps others discover yadm.