michelegera’s dotfiles 
These are the base dotfiles that I start with when I set up a new environment.
For more specific local needs I use the *.local files described in the
Local Settings section.
Some commands (e.g. defaults write) won’t work unless the terminal has full
disk access. To grant full disk access to the terminal, go to
System Settings > Privacy & Security > Full Disk Access and add the terminal
to the list of apps.
To set up the dotfiles run the appropriate snippet in the terminal:
[!CAUTION]
DO NOT run the setup snippet if you do not fully understand
what it does. Seriously, DON’T!
bash -c "$(curl -LsS https://setup.dotfiles.michelegera.dev)"That’s it! ✨
The setup process will:
- Download the dotfiles on your computer (by default it will suggest
~/Code/$(whoami)/dotfiles) - Create some additional directories
- Symlink the Git, prefs, and shell files
- Install applications and command-line tools
- Set custom preferences preferences
The dotfiles can be easily extended to suit additional local requirements by using the following files:
The ~/.fishconfig.local file will be automatically sourced after the standard
Fish configuration, thus, allowing its content to add to or overwrite
the existing aliases, settings, PATH, environment variables etc.
Here is an example:
# Set local aliases.
alias g="git"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Set environment variables.
set -x NPMJS_AUTH_TOKEN xxxxxxxx
The ~/.gitconfig.local file will be automatically included after the
configurations from ~/.gitconfig, thus, allowing its content to overwrite or
add to the existing Git configurations.
Note: Use ~/.gitconfig.local to store sensitive information such as the
Git user credentials, e.g.:
[commit]
# Sign commits using GPG.
# https://help.github.com/articles/signing-commits-using-gpg/
gpgSign = true
[user]
name = John Appleseed
email = john.appleseed@apple.com
signingKey = XXXXXXXXThe ~/.sshconfig.local file will be automatically included after the
configurations from ~/.ssh/config, thus, allowing its content to add to or
overwrite the existing SSH configurations.
Note: Use ~/.sshconfig.local to store machine-specific SSH settings such
as custom hosts or identity files, e.g.:
Host github.com
IdentityFile ~/.ssh/github
LogLevel ERRORFirst, make sure permissions are set correctly on the .gnupg directory:
chmod -R go= ~/.gnupg/Next, import your private GPG key:
gpg --import <key-file>Finally, set user.signingKey in ~/.gitconfig.local to the short id of your
key. You can find it by running:
gpg --list-secret-keys --keyid-format SHORTIf you decide to fork this project, do not forget to substitute my username with your own in the following places:
| File | What to change |
|---|---|
src/setup.sh |
GITHUB_REPOSITORY variable |
README.md |
Setup URL, CI badge links, profile links |
~/.gitconfig.local (after setup) |
Git user.name and user.email |
Note:
src/shell/config/gh/hosts.ymlis also ignored and contains your GitHub CLI user. If you fork, update it after the first run or delete it and re-rungh auth login.
To update the dotfiles you can either run the setup script or, if you
want to update one particular part, run the appropriate os script.
Inspiration and code was taken from many sources, but mainly Cătălin Mariș’ dotfiles. Thank you for your amazing work!
The code is available under the MIT license.