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)
📦 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:
-
Install YADM:
# On macOS with Homebrew brew install yadm # On Ubuntu/Debian sudo apt-get install yadm
-
Initialize YADM:
yadm init yadm add <important-dotfile> yadm commit -m "Initial commit"
-
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
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.
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.
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.
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.
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 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)
📦 Bundler for non-Ruby dependencies from Homebrew, Homebrew Cask and the Mac App Store.
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