A tidy $HOME
is a tidy mind.
These are my dotfiles, designed primarily for macOS (Apple silicon) and Debian 12, heavily inspired by
hlissner/dotfiles. They are my specific
breed of madness, split into 2-level topics (e.g. shell/zsh
) that strive for
minimum $HOME
presence (adhering to XDG standards where possible).
git clone https://github.com/eduarbo/dotfiles.git ~/.config/dotfiles
- Homebrew (for macOS)
- git
- zsh
- curl
The following are the categories and topics available to install:
-
macos/
- macOS compatible utilitiesapps
- collection of macOS apps that I use on a daily basisdefaults
- bare essentials for macOShammerspoon
- a bunch of lua scripts to boost my productivity- Window manager
- Quick app launcher
- Push-to-talk Mic
- Audio output switcher
karabiner
- powerful keyboard customizer
-
editor/
- Configuration for my text editorsemacs
- the best of Emacs and Vim in one placenvim
- for quick file editingcoding-style
- Tools to enforce coding style because consistency is king
-
shell/
- Shell utilitiesgit
- nice aliases and zsh pluginstmux
- window manager within the terminal + nice pluginszsh
- my shell of choice, fast, powerful and with a nice promptkitty
- A purr-fectly powerful and feature-rich terminal
-
dev/
- Relevant to software development & programming in generallua
- manage lua environments with luaenvnode
- setup nodenv, a lightweight alternative to nvmpython
- setup pyenv, a simple Python version management
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
e.g.
deploy misc/kitty shell/{zsh,tmux}
: enables misc/kitty, shell/zsh & shell/tmuxdeploy -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
- Generate one key per client device with
ssh-keygen -t ed25519 -C "[email protected]"
and protect it with a strong passphrase
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.
[email protected]: 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
)