Personal dotfiles managed with a bare git repo pattern — files live directly in $HOME, no symlinks.
curl -fsSL https://raw.githubusercontent.com/diegoferigo/dotfiles/main/bootstrap | bashThis will:
- Install pixi if not already present
- Download
.local/bin/dotfilesand run it via itspixi execshebang - Clone the bare repo into
~/.dotfiles - Check out tracked dotfiles directly into
$HOME(backing up any conflicts) - Install tools via
pixi global(starship, bat, eza, fzf, fd, zoxide, difftastic, age) - Report encrypted dotfiles that can be applied separately
git clone https://github.com/diegoferigo/dotfiles.git
cd dotfiles
./bootstrapThe dotfiles command (checked out to ~/.local/bin/dotfiles) wraps git against the bare repo:
dotfiles git status
dotfiles git diff
dotfiles git add ~/.config/starship.toml
dotfiles git commit -m "update starship config"
dotfiles git log --oneline
dotfiles git pushPull the latest changes and re-apply dotfiles:
dotfiles --updatePublic files are updated independently from encrypted files. Run
dotfiles secrets status after an update and apply changes explicitly.
Use dotfiles --update --with-secrets to update both in one interactive run.
Encrypted sources are tracked under secrets/home/ and map directly below
$HOME:
secrets/home/.ssh/config.d/rai.conf.age -> ~/.ssh/config.d/rai.conf
One shared age identity is protected by a high-entropy passphrase stored in a password manager. Its encrypted wrapper is distributed through the repository, so machines do not need separate private-key provisioning. Bootstrap and update leave secrets untouched unless explicitly requested.
dotfiles secrets init
dotfiles secrets encrypt ~/.ssh/config.d/rai.conf
dotfiles secrets status
dotfiles secrets apply
dotfiles --update --with-secrets
dotfiles secrets change-passphraseSee secrets/README.md for setup, authoring, deployment,
conflict handling, recovery, and key rotation.
Remove all checked-out dotfiles and restore any backed-up originals:
dotfiles --uninstallUninstall removes unchanged decrypted files and restores their original backups. The tracked encrypted identity follows the normal public-dotfile lifecycle. A legacy plaintext identity is never removed.
- Compatible with GitHub Codespaces — the devcontainer can run
./bootstrapaspostCreateCommand. - Requires only
pixion the host; all Python dependencies are resolved on-the-fly via the shebang. DOTFILES_REPO,DOTFILES_DIR,BACKUP_DIRenvironment variables can override defaults.
