Convert Figma logo to code with AI

TheLocehiliosan logoyadm

Yet Another Dotfiles Manager

5,022
176
5,022
60

Top Related Projects

12,818

Manage your dotfiles across multiple diverse machines, securely.

7,001

A tool that bootstraps your dotfiles ⚡️

3,121

rc file (dotfile) management

2,189

config manager based on Git

14,514

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

1,778

Save your dotfiles once, deploy them everywhere

Quick Overview

YADM (Yet Another Dotfiles Manager) is a tool for managing dotfiles across multiple systems. It uses Git as its core technology, allowing users to track, synchronize, and version control their configuration files. YADM extends Git's functionality with features specifically designed for dotfile management.

Pros

  • Seamless integration with Git, leveraging existing version control knowledge
  • Support for system-specific configurations through alternative files
  • Encryption capabilities for sensitive data
  • Automatic bootstrapping of new systems

Cons

  • Steeper learning curve compared to simpler dotfile management tools
  • Requires Git knowledge for advanced 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 in your home directory:

    yadm init
    
  3. Add your dotfiles:

    yadm add .bashrc .vimrc
    yadm commit -m "Initial commit"
    
  4. To clone your dotfiles on a new system:

    yadm clone <your-repo-url>
    

YADM will automatically create symlinks for your dotfiles in the appropriate locations.

Competitor Comparisons

12,818

Manage your dotfiles across multiple diverse machines, securely.

Pros of chezmoi

  • More powerful templating system with support for Go templates
  • Built-in encryption for sensitive data using age or gpg
  • Cross-platform support with native binaries for multiple operating systems

Cons of chezmoi

  • Steeper learning curve due to more complex configuration
  • Requires external tools for some features (e.g., encryption)
  • May be overkill for simple dotfile management needs

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

Summary

Both yadm and chezmoi are dotfile management tools, but they differ in complexity and features. yadm offers a simpler, Git-based approach that's easy to learn and use. chezmoi provides more advanced features like templating and encryption, making it suitable for complex setups and sensitive data management. The choice between them depends on your specific needs and desired level of customization.

7,001

A tool that bootstraps your dotfiles ⚡️

Pros of dotbot

  • Plugin system for extending functionality
  • Supports multiple operating systems out of the box
  • Allows for complex configurations with YAML

Cons of dotbot

  • Requires Python installation
  • More complex setup process
  • Less intuitive for users new to dotfile management

Code Comparison

dotbot configuration (YAML):

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

yadm configuration (shell script):

yadm add .vimrc
yadm add .zshrc
yadm commit -m "Add dotfiles"
yadm push

Key Differences

  • yadm uses a Git-based approach, making it familiar for Git users
  • dotbot offers more flexibility in configuration but requires learning YAML
  • yadm has built-in encryption support for sensitive files
  • dotbot's plugin system allows for easier extension of functionality
  • yadm provides a simpler setup process for beginners

Both tools effectively manage dotfiles, but they cater to different user preferences and skill levels. yadm is more straightforward for those comfortable with Git, while dotbot offers more advanced configuration options and cross-platform support.

3,121

rc file (dotfile) management

Pros of rcm

  • Written in shell script, making it more portable and easier to understand for users familiar with shell scripting
  • Supports multiple dotfile directories, allowing for better organization and separation of concerns
  • Includes a tagging system for managing different configurations across multiple machines

Cons of rcm

  • Lacks built-in encryption support for sensitive files
  • Does not provide native support for alternative storage locations like Git repositories
  • Limited templating capabilities compared to yadm's more advanced features

Code Comparison

yadm:

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

rcm:

mkrc ~/.vimrc
rcup

The code comparison shows that yadm uses Git-like commands for managing dotfiles, while rcm uses its own set of commands. yadm's approach may be more familiar to users accustomed to Git, while rcm's commands are more specific to dotfile management.

Both tools aim to simplify dotfile management, but they take different approaches. yadm leverages Git's functionality and adds features specific to dotfile management, while rcm provides a more focused set of tools for managing and symlinking dotfiles across multiple machines.

2,189

config manager based on Git

Pros of vcsh

  • Uses standard Git commands, making it more familiar for experienced Git users
  • Allows managing multiple repositories independently, providing greater flexibility
  • Supports complex setups with multiple config files across different repositories

Cons of vcsh

  • Steeper learning curve, especially for users less familiar with Git
  • Requires more manual setup and configuration compared to yadm
  • Can be more complex to manage multiple repositories for simpler dotfile setups

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.

14,514

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 custom configurations and file structures
  • May not handle complex dotfile setups as efficiently as yadm
  • Limited version control integration compared to yadm's Git-based approach

Code comparison

mackup:

def copy(self, src, dst):
    """Actually copy src to dst."""
    if os.path.islink(src):
        linkto = os.readlink(src)
        os.symlink(linkto, dst)
    else:
        shutil.copy(src, dst)

yadm:

function copy_files() {
    local src="$1"
    local dst="$2"
    if [[ -L "$src" ]]; then
        ln -s "$(readlink "$src")" "$dst"
    else
        cp "$src" "$dst"
    fi
}

Both projects aim to manage dotfiles, but mackup focuses on application-specific configurations with cloud sync support, while yadm provides a more Git-centric approach with greater flexibility for custom setups.

1,778

Save your dotfiles once, deploy them everywhere

Pros of dotdrop

  • Supports templating with Jinja2, allowing for more dynamic configuration files
  • Offers a profile system for managing different configurations across multiple machines
  • Provides a dry-run feature to preview changes before applying them

Cons of dotdrop

  • Requires Python and additional dependencies to be installed
  • Has a steeper learning curve due to its more complex configuration options
  • May be overkill for users with simple dotfile management needs

Code Comparison

dotdrop configuration example:

config:
  dotpath: dotfiles
  profile: default
dotfiles:
  f_vimrc:
    src: vimrc
    dst: ~/.vimrc

yadm usage example:

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

Summary

dotdrop offers more advanced features like templating and profiles, making it suitable for complex setups across multiple machines. However, it requires additional dependencies and has a steeper learning curve. yadm, on the other hand, provides a simpler, Git-based approach that may be more accessible for users with basic dotfile management needs. The choice between the two depends on the user's requirements and familiarity with the tools.

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.

  • Based on Git, with full range of Git's features
  • Supports system-specific alternative files or templated files
  • Encryption of private data using GnuPG, OpenSSL, transcrypt, or git-crypt
  • Customizable initialization (bootstrapping)
  • Customizable hooks for before and after any operation

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.