https://github.com/matijaoe/dotfiles
personal dotfiles and mac setup script packaged in a neat tool
https://github.com/matijaoe/dotfiles
bash zshrc
Last synced: 4 months ago
JSON representation
personal dotfiles and mac setup script packaged in a neat tool
- Host: GitHub
- URL: https://github.com/matijaoe/dotfiles
- Owner: matijaoe
- Created: 2024-05-17T08:29:14.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2026-03-05T11:49:10.000Z (4 months ago)
- Last Synced: 2026-03-05T15:41:30.353Z (4 months ago)
- Topics: bash, zshrc
- Language: Shell
- Homepage:
- Size: 217 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# dotfiles
Personal dotfiles with profile support for **work** and **personal** machines.
## Quick start
```sh
curl -fsSL raw.githubusercontent.com/matijaoe/dotfiles/main/install.sh | bash
```
Or manually:
```sh
git clone https://github.com/matijaoe/dotfiles.git ~/dotfiles
cd ~/dotfiles
./setup.sh --work # or --personal
```
After setup, the `dots` CLI is available. Run `dots help` for full usage.
## Commands
```sh
dots setup [--work|--personal] [-y] # full system setup
dots save [-y] # save current state to repo
dots run [profile] # run individual script
dots run brew # install Homebrew packages
dots run symlinks # create config symlinks
dots run dock # apply Dock layout
dots run macos # apply macOS system defaults
dots run claude # setup Claude Code configs
dots run mas # install Mac App Store apps (personal only)
dots run curl # install curl-based tools
```
## Profiles
| Flag | Includes |
| ------------ | ------------------------------------------ |
| `--work` | Work Brewfile, work SSH config, mise tools |
| `--personal` | Personal Brewfile, personal SSH config, MAS apps |
Profile-specific files live in subdirectories: `packages/brew/work/`, `packages/dock/work.txt`, `config/ssh/config.work`.
Profile is resolved in order:
1. Explicit flag
2. Saved in `~/.dotfiles-profile`
3. Interactive prompt (first setup only)
## Setup flow
`dots setup` runs these steps in order:
| # | Step | Standalone | Notes |
| --- | ----------------- | ------------------- | -------------------------------- |
| 1 | Xcode CLI Tools | | |
| 2 | Homebrew | | |
| 3 | Profile detection | | prompts if no profile set |
| 4 | Brew packages | `dots run brew` | |
| 5 | MAS apps | `dots run mas` | personal profile only |
| 6 | Symlinks | `dots run symlinks` | shell, git, ssh, claude, editors |
| 7 | Antidote plugins | | bootstraps zsh plugin bundle |
| 8 | Node (via n) | | |
| 9 | npm globals | | |
| 10 | pnpm globals | | |
| 11 | Curl tools | `dots run curl` | |
| 12 | mise | | work profile only |
| 13 | macOS defaults | `dots run macos` | |
| 14 | Dock layout | `dots run dock` | |
## Save flow
`dots save` snapshots the current machine state and prompts to commit and push. Pass `-y` to skip the confirmation and commit+push automatically.
| # | Step | Output |
| --- | --------------------- | ---------------------------------- |
| 1 | Read profile | from `~/.dotfiles-profile` |
| 2 | Dump brew packages | `packages/brew/<profile>/Brewfile` |
| 3 | Dump Dock pinned apps | `packages/dock/<profile>.txt` |
| 4 | Dump npm globals | `packages/npm-globals.txt` |
| 5 | Dump pnpm globals | `packages/pnpm-globals.txt` |
| 6 | Git commit + push | prompts y/N |