Hey! These are my dotfiles - basically my shell configuration that I use to make my terminal life easier. I've organized everything into separate files so it's easier to manage and find stuff.
dotfiles/
├── .zshrc # Main file that loads everything else
├── .zsh_secrets # My API keys (not in git, obviously)
├── .gitignore # Keeps secrets out of git
├── install.sh # Quick setup script
├── ssh/
│ ├── config # SSH host aliases (github, oracle, etc.)
│ ├── github-personal # Personal GitHub SSH key (gitignored)
│ ├── github-work # Work GitHub SSH key (gitignored)
│ ├── oracle # Oracle server private key (gitignored)
│ └── oracle.pub # Oracle server public key
└── zsh/
├── prompt.zsh # Powerlevel10k prompt setup
├── exports.zsh # Environment variables and PATH stuff
├── plugins.zsh # zsh plugins (syntax highlighting, autosuggestions, etc.)
├── aliases.zsh # All my shortcuts (git, docker, dev stuff, etc.)
├── functions.zsh # Custom functions I use (search tools, killapp, etc.)
└── completions.zsh # Completion scripts
-
Clone this repo:
git clone <your-repo-url> ~/dotfiles cd ~/dotfiles
-
Install zsh plugins (required for the shell to load without errors):
brew install powerlevel10k zsh-syntax-highlighting zsh-autosuggestions zsh-autocomplete
-
Run the install script - it'll handle everything:
./install.sh
-
Add your API keys (if you have any):
nano .zsh_secrets # Add your keys here -
Reload your shell:
source ~/.zshrc
That's it! You're good to go.
If you want to do it yourself:
- Clone the repo wherever you want (I use
~/dotfiles) - Create a symlink so your shell finds it:
ln -s ~/dotfiles/.zshrc ~/.zshrc
- Create
.zsh_secretsin the dotfiles folder and add your keys - Reload:
source ~/.zshrc
The ssh/ folder manages SSH keys and config. The install script handles everything automatically:
- Symlinks
ssh/config→~/.ssh/config - Copies private keys to
~/.ssh/with correct permissions (600) - Private keys are gitignored — only the config and public keys are tracked
Supports personal and work GitHub accounts via separate SSH keys:
github.com→ personal account (default)github-work→ work account
Clone using aliases:
gcl user/repo.git # personal
gcw org/repo.git ~/agi/repo # workGit identity auto-switches based on directory — repos under ~/agi/ use the work email via ~/.gitconfig conditional includes.
Setup on a new machine:
ssh-keygen -t ed25519 -C "personal@email.com" -f ~/.ssh/github-personal
ssh-keygen -t ed25519 -C "work@email.com" -f ~/.ssh/github-workThen add each public key to the respective GitHub account.
oracle→ssh oracleor aliassso
Adding a new server: Edit ssh/config, drop the key in ssh/, and add the private key filename to .gitignore.
- Search utilities:
ffto find files,fgrepto search code,codegrepto search across projects - Git shortcuts:
gc,gcp,gl,gs, etc. - makes git way faster - Dev shortcuts:
brdfor bun run dev,sknewfor new Svelte projects, etc. - Kill apps:
killapp <name>to kill any running app - And a bunch more - check out the files to see everything!
- The
.zshrcautomatically finds thezsh/folder, so you can put this repo anywhere .zsh_secretsis gitignored - you'll need to create it on each machine- Everything is split up by what it does, so it's easy to find and edit stuff
Enjoy! 🚀