1 unstable release
Uses new Rust 2024
| 0.1.0 | Apr 4, 2026 |
|---|
#425 in Configuration
45KB
1K
SLoC
dotdot - a simple and smal dotfile manager
dotdot is a tool for managing [dotfiles][].
- Based on Git to keep your config backed up, synced and manage different profiles.
- Supports os-specific file paths.
- Switch profiles easily.
- Easily migrate existing files to use dotdot.
Tour
# Initialize a new dotfile repository
dotdot new (--format <json/tom/yml>) (--d <directory>)
# Clone an existing repository
dotdot get <url> (--d <directory>)
# Add files/directories
dotdot add <file/directory>
# Change to another profile
dotdot profile work (--clean)
# Unlink all files
dotdot unlink
# Link all the files
dotdot link
# Check current state
dotdot doctor
Example dotdot
[common]
"mise" = "~/.config/mise"
# tmux
".tmux.conf" = "~/.tmux.conf"
# nvim
"nvim/init.lua" = "~/.config/nvim/init.lua"
"nvim/config/lazy.lua" = "~/.config/nvim/lua/config/lazy.lua"
# fish
"fish/config.fish" = "~/.config/fish/config.fish"
"fish/functions/git.fish" = "~/.config/fish/functions/git.fish"
"fish/functions/safe.fish" = "~/.config/fish/functions/safe.fish"
"fish/conf.d/fish_frozen_key_bindings.fish" = "~/.config/fish/conf.d/fish_frozen_key_bindings.fish"
"fish/conf.d/fish_frozen_theme.fish" = "~/.config/fish/conf.d/fish_frozen_theme.fish"
"fish/conf.d/omf.fish" = "~/.config/fish/conf.d/omf.fish"
"fish/conf.d/zerobrew.fish" = "~/.config/fish/conf.d/zerobrew.fish"
"omf/bundle" = "~/.config/omf/bundle"
"omf/channel" = "~/.config/omf/channel"
"omf/theme" = "~/.config/omf/theme"
[macos]
"ghostty" = "~/.config/ghostty"
[linux]
"i3/config" = "~/.i3/config"
Dependencies
~5.5–9MB
~162K SLoC