A tidy $HOME is a tidy mind.
Kitty and Emacs - Jul-2023 Screenshot of macOS Ventura
Doom Emacs - Jul-2023 Screenshot of macOS Ventura
These are my dotfiles, designed primarily for macOS (Apple silicon) and Debian 12, heavily inspired by
hlissner/dotfiles. Topics are split into category/topic (e.g. shell/zsh), aim for XDG compliance, and clutter your $HOME as little as possible.
- Homebrew (for macOS)
- git
- zsh
- curl
git clone --recurse-submodules https://github.com/eduarbo/dotfiles.git ~/.config/dotfilesThe following are the categories and topics you can install:
-
macos/β Mac-specific tools and tweaksappsβ The essential macOS app lineup I can't live withoutdefaultsβ Opinionated values for a saner (and possibly sassier) macOShammerspoonβ Lua-powered automation for pro-level productivity- Window wrangling without the wrestling
- Lightning-fast app launcher
- Push-to-talk mic sorcery
- Instantly swap your audio outputs like a DJ
karabinerβ The ultimate keyboard wizardry to remap all the things
-
editor/β My battle-stations for text and codeemacsβ The best of both Emacs and Vim worlds, with extra chaosnvimβ My nimble sidekick for those "just one quick edit" momentscoding-styleβ Keep your code prettier than your neighbor's garden
-
shell/β Terminal superpowers and creature comfortsgitβ Snazzy aliases and Zsh plugins for effortless versioningtmuxβ Tab-multiplying terminal wizardryzshβ The shell with speed, features, and a prompt that actually sparks joykittyβ The terminal so full-featured, even your cat would approve
-
dev/β Essential tools and setups for a life in codeluaβ Harness the power of luaenv and keep your Lua scripts flowingnodeβ Install nodenv: because who wants to remember which version of Node broke what?pythonβ Pyenv to rule them all, so every script gets the right snakegolangβ Go fast, install Go, and grab some must-have packagesphpβ Composer support included, because sometimes you just canβt avoid PHP
Usage: deploy [-acdlLit] [TOPIC...]
-a Target all enabled topics (ignores TOPIC args)
-c Afterwards, remove dead symlinks & empty dot-directories in $HOME.
Can be used alone.
-d Unlink and run `./_init clean` for topic(s)
-l Only relink topic(s) (implies -i)
-L List enabled topics
-i Inhibit install/update/clean init scripts
-t Do a test run; do not actually do anything
deploy shell/zsh macos/kitty: enablesshell/zshandmacos/kittydeploy -d shell/zsh: disables shell/zsh & cleans up after itdeploy -l shell/zsh: refresh links for shell/zsh (inhibits init script)deploy -l: relink all enabled topicsdeploy -L: list all enabled topics
Here's a breakdown of what the script does:
cd $topic if [[ -L $DOTFILES_DATA/${topic/\//.}.topic ]]; then ./_init update else ln -sfv $DOTFILES/$topic $DOTFILES_DATA/${topic/\//.}.topic ./_init install ./_init link fi
-
If you use a password manager like 1Password, managing SSH keys is a breeze (and much more convenient). But if you're old-school (or just like a little DIY), you can still generate SSH keys manually:
ssh-keygen -t ed25519 -C "personal-mbpro-2025" # Use a descriptive comment: purpose + device + year
Forge (Magitβs helper for GitHub/GitLab) expects your personal access token to be stored in ~/.authinfo.gpg, or another location specified in your auth-sources. This file should never be committed to your repository.
To set up your tokens securely:
- This repo provides an
authinfo.gpg.exampletemplate. Copy or rename this file toauthinfo.gpgin the same location - Run
dot -l doom/emacsto link the file - Open and edit the file in Emacs to add your tokens, then save. Emacs will manage the GPG encryption for you
By following these steps, your dotfiles remain clean, secure, and portableβreducing the risk of accidentally exposing your credentials.
Make sure the GPG key ID is correct. You can get a list of GPG keys with
gpg --list-secret-keys --keyid-format LONG and then set it in Git with
git config --global user.signingkey [GPG-key-ID].
More details in Telling Git about your GPG key.
git@github.com: Permission denied (publickey)
Just add your SSH Key to your GitHub account
- DOOM Emacs (pulled by
editor/emacs) - Pacmux Tmux theme (pulled by
shell/tmux) - Simpl ZSH prompt (pulled by
shell/zsh)