Top Related Projects
Manage your dotfiles across multiple diverse machines, securely.
A tool that bootstraps your dotfiles ⚡️
rc file (dotfile) management
config manager based on Git
Keep your application settings in sync (OS X/Linux)
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:
-
Install YADM:
# On macOS with Homebrew brew install yadm # On Ubuntu/Debian sudo apt-get install yadm
-
Initialize YADM in your home directory:
yadm init
-
Add your dotfiles:
yadm add .bashrc .vimrc yadm commit -m "Initial commit"
-
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
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.
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.
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.
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.
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.
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 designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
yadm - Yet Another Dotfiles Manager
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.
Top Related Projects
Manage your dotfiles across multiple diverse machines, securely.
A tool that bootstraps your dotfiles ⚡️
rc file (dotfile) management
config manager based on Git
Keep your application settings in sync (OS X/Linux)
Save your dotfiles once, deploy them everywhere
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot