A chezmoi-inspired dotfile manager written in Rust. Type-safe modules, cross-platform packages, and a plugin system.
# One-liner (Linux x86_64/arm64, macOS)
curl -fsSL https://github.com/grave0x/dwell/raw/main/scripts/install.sh | sh
# Or with Cargo
cargo install --git https://github.com/grave0x/dwell
# Or pick your package manager
# Arch Linux: yay -S dwell
# Debian/Ubuntu: sudo dpkg -i dwell_*.deb
# Homebrew: brew install grave0x/tap/dwell# Bash
dwell completion bash | sudo tee /usr/share/bash-completion/completions/dwell
# Zsh
mkdir -p ~/.zfunc && dwell completion zsh > ~/.zfunc/_dwell
echo 'fpath+=~/.zfunc' >> ~/.zshrc
# Fish
dwell completion fish > ~/.config/fish/completions/dwell.fish
# PowerShell
dwell completion powershell > _dwell.ps1# Initialize
dwell init
# Add your dotfiles
dwell add ~/.bashrc
dwell add ~/.config/nvim/init.lua
# Deploy
dwell apply| Feature | dwell | chezmoi |
|---|---|---|
| Template engines | Handlebars, Rhai, Tera | Go templates |
| Package management | Built-in (apt, pacman, brew, nix, cargo) | External |
| Plugin system | WASM + Lua | None |
| Module system | TOML-defined generators | None |
| Secret backend | age | age, GPG, Vault |
| Migration from chezmoi | Auto-detection (dot_ prefix) |
— |
dwell init # set up ~/.local/share/dwell + git repo
dwell add <path> # add a dotfile to source
dwell apply # render templates → $HOME
dwell diff # preview changes
dwell status # check sync state
dwell watch # auto-apply on file changes
dwell doctor # health check
dwell package # manage system packages
[meta]
name = "dotfiles"
[data]
home = "/home/user"
hostname = "my-machine"
[packages]
system.apt = ["build-essential", "git"]
system.cargo = ["bat", "ripgrep"]- Dotfiles repo: github.com/grave-configs/dotfiles — my personal dotfiles managed by dwell