A collection of customized dotfiles to enhance your development environment on macOS.
These dotfiles provide a comprehensive setup for developers, including:
- Custom terminal configuration with Solarized Dark theme
- Zsh shell with useful aliases and functions
- Kubernetes tools and configuration
- Homebrew package management
- Karabiner keyboard customization
- Vim-like navigation across applications
- Automatic update checking and dependency management
- Update status indicators in your prompt
- And much more!
If you're adding a new area to your forked dotfiles — say, "Java" — you can simply add a java directory and put files in there. Anything with an extension of .zsh will get automatically included into your shell. Anything with an extension of .symlink will get symlinked without extension into $HOME when you run script/bootstrap.
There's a few special files in the hierarchy:
- bin/: Anything in
bin/will get added to your$PATHand be made available everywhere. See bin/README.md for detailed documentation of each script. - Brewfile: This is a list of applications for Homebrew to install.
- topic/*.zsh: Any files ending in
.zshget loaded into your environment. - topic/path.zsh: Any file named
path.zshis loaded first and is expected to setup$PATHor similar. - topic/completion.zsh: Any file named
completion.zshis loaded last and is expected to setup autocomplete. - topic/*.symlink: Any files ending in
*.symlinkget symlinked into your$HOME. This is so you can keep all of those versioned in your dotfiles but still keep those autoloaded files in your home directory. These get symlinked in when you runscript/bootstrap. - templates/: Contains templates for files that should be stored in separate private repositories, such as
.dot-secrets. These templates help you set up sensitive configurations without exposing actual credentials. - functions/: Contains useful shell functions like
kubelogfor enhanced Kubernetes log viewing.
Run this:
git clone https://github.com/helmedeiros/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
script/bootstrap
bin/dotThis will:
- Clone the repository to your home directory
- Symlink the appropriate files to your home directory
- Install dependencies via Homebrew
- Set up macOS defaults
- Configure your shell environment
The main file you'll want to change right off the bat is zsh/zshrc.symlink, which sets up a few paths that'll be different on your particular machine.
dot is a simple script that installs some dependencies, sets macOS defaults, and so on. Tweak this script, and occasionally run dot from time to time to keep your environment fresh and up-to-date:
bin/dotThese dotfiles include an automatic update checker that runs once per day when you open a new shell. It will:
- Check if your local dotfiles are behind the remote repository
- Check for outdated Homebrew packages and npm global packages
- Notify you when updates are available
- Provide a summary of changes
- Offer to update automatically
- Show update indicators in your prompt (e.g., [DOTFILES UPDATE], [BREW UPDATE], [NPM UPDATE])
You can also manually check for updates at any time by running:
dotfiles-update-checkTo apply pending updates and clear the status indicators:
dotfiles-apply-updatesThis comprehensive update system ensures both your dotfiles and their dependencies stay current with the latest improvements without requiring manual checks.
The dotfiles include enhanced Kubernetes tools:
kubelog: A powerful function for viewing and filtering Kubernetes pod logs- VPN-aware configuration that gracefully handles connectivity issues
- Automatic context switching
- Solarized Dark theme for Terminal.app
- Custom prompt with git status information
- Syntax highlighting for commands
The dotfiles include tools for managing your shell history:
history-clean: A secure way to remove sensitive information from your shell history- Remove specific line numbers:
history-clean 42 - Remove multiple lines:
history-clean 10 15 20 - Remove all lines containing a pattern:
history-clean -p "password" - Remove the last N commands:
history-clean --last 5 - Clear all autocompletion history:
history-clean --autocomplete
- Remove specific line numbers:
This is particularly useful when you accidentally paste sensitive information like passwords into your terminal. The script not only cleans your command history but also removes matching entries from autocompletion and autosuggestions.
Karabiner is a powerful utility for keyboard customization. You can expect some keyboard changing after running this dotfiles.
Press Esc to enter Vimium mode.
K, gt Go one tab right
J, gT Go one tab left
t Create new tab
x Close current tab
X Restore closed tab
g0 Go to the first tab
g$ Go to the last tab
h/j/k/l Arrow Keys
gg Scroll to the top of the page
G Scroll to the bottom of the page
f, <c-f> Scroll a full page down
b, <c-b> Scroll a full page up
<c-u> Scroll 20 lines up
<c-d> Scroll 20 lines down
r Reload the page
/ Search
n Cycle forward to the next find match
N Cycle backward to the previous find match
u Undo
<c-r> Redo
i Enter insert mode
For sensitive information like API keys and company-specific configurations, create a .dot-secrets repository in your home directory. Templates for this repository can be found in the templates/ directory.
Feel free to fork this repository and customize it to your needs. The modular structure makes it easy to add, remove, or modify components without breaking the entire system.
I forked Zach Holman's excellent dotfiles and built upon his solid foundation.