My personal dotfiles — everything needed to set up a new macOS machine the way I like it.
| Folder | Purpose |
|---|---|
zsh/ |
Zsh shell config, aliases, and utility functions |
nvim/ |
Neovim config (LazyVim-based) |
git/ |
Git config, global gitignore, commit template |
atuin/ |
Atuin shell history config |
brew/ |
Brewfile with all packages and apps |
background/ |
Desktop wallpaper |
macos/ |
macOS system defaults script |
Clone the repo and run the install script:
git clone https://github.com/jmmalaca/sudo_env.git ~/sudo_env
cd ~/sudo_env
./install.shThe script will:
- Install Xcode Command Line Tools (if needed)
- Install Homebrew and run
brew bundle - Install Oh My Zsh and its plugins (zsh-autosuggestions, zsh-syntax-highlighting)
- Install nvm and git-fuzzy
- Symlink all config files to their expected locations
- Optionally apply macOS system defaults
Warning: Review the scripts before running, especially
macos/setup.sh— it changes system-level defaults.
A few manual steps are always needed on a new machine:
Git config — fill in your name and email:
# edit ~/.gitconfig and replace YOUR_NAME / YOUR_EMAILAPI keys — if any tool requires an API key, store it in the macOS Keychain or a secrets manager. Never put keys in plain text files like ~/.zshrc.
Atuin — log in to sync your shell history:
atuin login
atuin syncRuby — install and set a version:
rbenv install 3.3.7
rbenv global 3.3.7Node — install a version:
nvm install --ltsThe nvim/ folder contains the full Neovim config (LazyVim-based). On a new machine it's symlinked to ~/.config/nvim/. Plugins are managed by lazy.nvim and will be installed automatically on first launch.
The macos/setup.sh script configures sensible macOS defaults — Finder, Dock, keyboard, trackpad, screenshots, Safari, and more. Run it manually if you skipped it during install:
./macos/setup.sh- Shell: Zsh with Oh My Zsh
- Theme: Jonathan
- Plugins: git, ruby, rails, zsh-autosuggestions, zsh-syntax-highlighting
- History: Atuin (synced across machines)
- Aliases:
~/.aliases— navigation, git, services (pg, mysql, redis, docker), and more - Functions:
~/.functions—mkd,v,o,server,json,calc,fs,gz,getcertnames, and more
- Pager: diff-so-fancy
- Fuzzy branch checkout:
git b(powered by fzf) - Key aliases:
s(status),lg(log graph),co(checkout),please(force-with-lease),dm(delete merged branches) - Commit template: Motivation / Modifications / Result sections