A spring-loaded symlink-based dotfile manager built in shell.
Move dotfiles to a central repo, replace originals with symlinks, and keep track of them for easy install. That's it.
- β¨ Simple: One command to add, install, drop, or uninstall dotfiles.
- π Safe: Won't overwrite existing files without confirmation.
- π Git-friendly: Just a folder and a map file - works with any VCS.
- ποΈ Flexible: Organize files however you want - by host, OS, or category.
- π§ No config: Just works with your dotfiles repo.
- π Portable: Single POSIX shell script with zero dependencies.
Slinky supports any system that ships with a POSIX-compliant shell.
brew install boldandbrad/tap/slinkyIf this project gains traction I may add slinky to other package managers in the future.
Add slinky as a submodule.
git submodule add https://github.com/boldandbrad/slinkyOr simply download the script and add it to your path. You can even store it directly in your dotfiles repository!
Slinky moves your dotfiles into a central repository, places symlinks in their
original locations, and remembers what is has done. You can think of it as a
light wrapper around mv and ln that can do tricks.
~/.vimrc # Before: regular file
~/.vimrc β ~/dotfiles/vimrc # After: symlinkBy default, slinky assumes your dotfiles repository is located at
$HOME/dotfiles, but you can change this behavior by setting the $DOTFILES
environment variable.
Slinky maintains a plaintext map file (slinky.map) in the root of the dotfiles
repository to keep track of the files and directories it manages. Example:
vimrc|~/.vimrc
config/nvim|~/.config/nvim
emacs|~/.emacsCombined, these patterns let you backup your dotfiles using your preferred version control or cloud storage system for easy install on any machine.
slinky add ~/.vimrc # add to dotfiles root
slinky add ~/.vimrc ~/.bashrc # add multiple at once
slinky add -p editors ~/.config/nvim # specify repo subdirectory
slinky add ~/.vimrc -p editors # flag can appear anywhereslinky list # list all tracked dotfiles
slinky list -p mac # only those under the given subdirectoryslinky find # find existing symlinks to your dotfiles repoUseful for auditing which dotfiles are already managed or for finding symlinks that weren't added through slinky.
slinky install # create symlinks for all tracked dotfiles
slinky install -p mac # only dotfiles under the given subdirectoryslinky drop config/nvim # move back to original location
slinky drop config/nvim .vimrc # drop multiple at onceslinky uninstall # remove all managed symlinksCheck out slinky in the wild. Add
your dotfiles github repo to the list by adding the slinky-dotfiles topic.