"There is no place like
$HOME."
Welcome to my Dotties repository. This is a collection of my personal configuration files (dotfiles) tailored to create a productive, minimal, and keyboard-centric development environment. Managed via a Bare Git Repository, this setup allows for clean version control directly from the home directory without the need for symlinking tools like GNU Stow.
Key configurations included in this repository:
| Tool | Description | Path |
|---|---|---|
| Neovim | My primary editor. Includes LSP, Treesitter, and custom keybindings. | .config/nvim |
| Fish Shell | Shell configuration, abbreviations, aliases, and prompt settings. | .config/fish |
| Git | Global git configuration and excludes. | .gitconfig |
Follow these steps to replicate this setup on a fresh machine.
- Setup the bare repository. Execute the following commands in your terminal:
# Clone the bare repository
git clone --bare <repository-url> $HOME/.dotties.git
# Define an alias for easier access
alias dotties='/usr/bin/git --git-dir=$HOME/.dotties.git --work-tree=$HOME'- Checkout the dotfiles to your home directory:
Caution
Checking out a bare repository may result in some files being overwritten, so back up any important files first.
dotties checkout
Tip
Checkout Failed? If you have existing config files (like .gitconfig or .config/nvim), the checkout step will fail to prevent overwriting them. You must back up or delete your existing files, then run dotties checkout again.
- Hide untracked files (prevents 'dotties status' from listing your whole home directory)
dotties config --local status.showUntrackedFiles no
To add and commit changes to your dotfiles, use the following commands:
dotties add <file-path>
# To commit changes
dotties commit -m "Your commit message"Likewise, to push changes to the remote repository, use:
dotties pushBecause this is a bare repository rooted in $HOME, the README.md might not be checked out to your home directory (to avoid clutter). To edit this README.md or other meta-files without polluting your home folder, use Git Worktrees.
This creates a temporary directory where the repository files exist normally, allowing you to edit the README comfortably.
- Create a worktree inside your bare repo folder (or anywhere else):
# Syntax: git worktree add <path-to-temp-folder> <branch>
git worktree add $HOME/dotties-worktree main- Edit the file: Navigate to that folder. You will see all your files there, including README.md
cd $HOME/dotties-worktree
nvim README.md```
3. **Commit and push changes**: Since this is a linked working tree, standard git commands work here.
```bash
git add README.md
git commit -m "docs: update README"
git push origin main- Clean up: After you're done, you can remove the worktree.
cd ..
rm -rf $HOME/dotties-worktree
git worktree pruneFeel free to fork this repo or suggest improvements!