dfl 0.2.0

A command-line tool for managing your dotfiles with Git.
dfl-0.2.0 is not a library.

dfl: A Git-Powered Dotfile Manager

Build License: MIT Rust Crates.io Repo docs.rs

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:

cargo install dfl

This installs the binary to ~/.cargo/bin. Be sure that directory is in your PATH.


Screenshot

🔧 Build from source

  1. Clone the repository:

    git clone https://github.com/aashish-thapa/dfl.git
    cd dfl
    
  2. Build and install the executable:

    cargo build --release
    sudo mv target/release/dfl /usr/local/bin/
    

💡 Usage

1) Initialize Your Repository

Create ~/.dfl and initialize it as a Git repo:

dfl init

2) Add and Commit a Dotfile

Automatically move a file into the repo, create a symlink back, and commit:

dfl add ~/.bashrc

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.

dfl remote add https://github.com/your-username/mydotfiles.git

4) Push and Pull Changes

Now you can easily push your changes to the remote.

dfl push

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.

cd ~
git clone https://github.com/your-username/mydotfiles.git .dfl
dfl pull
dfl sync

(If your tool uses a different subcommand name like deploy, replace accordingly.)


🤝 Contributing

We welcome contributions!

  1. Fork the repo
  2. Create a feature branch: git checkout -b feature/AmazingFeature
  3. Commit: git commit -m 'feat: Add amazing feature'
  4. Push: git push origin feature/AmazingFeature
  5. Open a Pull Request

📄 License

Licensed under the MIT License. See the LICENSE file for details.


🙏 Credits

Created by aashish-thapa.