This is my personal dotfiles repo. Feel free to explore it, copy bits and pieces for your own dotfiles, or fork the whole repo.
! NOTE
These dotfiles are tailored to my liking. If you want to use them, fork the repo, review the code, remove anything you don't want or need, and enjoy.
This repository is currently tailored for macOS systems only.
Dotfiles might work with little/no changes on other systems (although no test has been performed to confirm that, so far). The installation process will more likely require more effort, as it is thoroughly tailored on macOS systems.
It's my intention to make it crossplatform one day, but it will require major changes: like switching from homebrew
to Nix
as a system package manager, and adapting all system and app preferences automation script.
The installation process is largely automated, with only a few manual steps involved.
In a nutshell, to install the dotfiles on a brand new system, simply run the following shell commands:
# install the command line dev tools
xcode-select --install
# clone this dotfile repository
git clone https://github.com/Amheklerior/dotfiles $HOME/.dotfiles
# move into the .dotfiles directory
cd $HOME/.dotfiles
# run the install script and follow the instructions...
./bootstrap.sh
For a step-by-step reference guide in setting up a new machine, checkout the stup-guide and the system and apps preferences page.
Here's an overview of the repository structure
bootstrap.sh
- the main script that is used to automate the installation process (it calls in order, all scripts defined in thescripts/
dir below)scripts/
- scripts that are used to automate the installation processbundles/
packages.bundle
- list of all packages to be installedfonts.bundle
- list of all fonts to be installedapps.bundle
- list of all cask and mac app store's apps to be installedvscode.bundle
- list of all vscode extensions to be installedshell-plugins.list
- list of all shell plugins to be installedpersonal-repos.list
- list of all personal git repos to be clonedwork-repos.list
- list of all work related git repos to be cloned
prefs/
private/
- sensitive data like 2FA codes, keys, and tokens, all encryptedssh-keys
- ssh key pairs for both personal and work accountssystem/
- dotfiles that are symlinked into the user's home dirbin/
- scripts and utilities that are available in the PATHwallpaper/
- a set of nice wallpapers for my mac
My dotfiles are stored under the /system
directory. They are symlinked into the user's $HOME
dir using GNU stow
. This makes it easy to update them without having to manually synk them between the system and the repo.
Sensitive and private data, such as 2FA backup codes, SSH private keys, GitHub/GitLab access tokens, licence keys, personal and work related git repo lists, are all encrypted and protected with a password, using ansible-vault
.
SSH key pairs are safely stored under the /ssh-keys
directory. The private keys are stored encrypted, while the public ones are stored as is.
2FA codes, keys, and tokens for apps/services are stored encrypted in a *.codes
, *.key
, *.token
file respectively, under the /private
directory.
I've also integrated gitleaks
to run as a pre-commit git hook, to scan for potential secrets being committed.
If you have any suggestion/improvement be my guest!
Special thanks to:
- the github's dotfiles community which has been a great source of ideas and inspiration
- Michael Paulson (aka The Primeagen) for his developer productivity course
- Patrick Mcdonald for his dotfiles from start to finish-ish course
- Mathia's macos sensible default settings, and macos-defaults.com, used as reference for automating macos system settings, and
plistwatch
which made easier to experiment with, and iterate over, system and app's settings.