dfl: A Git-Powered Dotfile Manager
dfl
is a simple, fast, and feature-rich command-line tool for managing your dotfiles with Git.
It automates moving, symlinking, and syncing your configuration files across multiple machines.
Whether you're setting up a fresh dev box or keeping your fleet consistent, dfl
provides a seamless workflow.
✨ Features
- Automated Workflow: Uses Git under the hood to automatically add and commit files.
- Centralized Repository: Keeps all your dotfiles in one place (
~/.dfl
). - Easy Deployment: A single command links all your configs on a new machine.
- Built for Speed: Written in Rust for a fast, reliable experience.
🚀 Installation
📦 Install from crates.io (recommended)
If you have Rust installed:
This installs the binary to ~/.cargo/bin
.
Be sure that directory is in your PATH
.
Screenshot
🔧 Build from source
-
Clone the repository:
-
Build and install the executable:
💡 Usage
1) Initialize Your Repository
Create ~/.dfl
and initialize it as a Git repo:
2) Add and Commit a Dotfile
Automatically move a file into the repo, create a symlink back, and commit:
Tip: Repeat
dfl add
for other files like~/.zshrc
,~/.gitconfig
,~/.config/nvim/init.lua
, etc.
3) Connect to a Remote
To save your dotfiles to a remote repository like GitHub, first create an empty repository on GitHub, then add it to your dfl project.
4) Push and Pull Changes
Now you can easily push your changes to the remote.
5) Deploy on a New Machine
To get the latest changes on a new machine, first clone your repository into ~/.dfl, and then pull and sync.
(If your tool uses a different subcommand name like deploy
, replace accordingly.)
🤝 Contributing
We welcome contributions!
- Fork the repo
- Create a feature branch:
git checkout -b feature/AmazingFeature
- Commit:
git commit -m 'feat: Add amazing feature'
- Push:
git push origin feature/AmazingFeature
- Open a Pull Request
📄 License
Licensed under the MIT License. See the LICENSE file for details.
🙏 Credits
Created by aashish-thapa.