https://github.com/deligoez/dotfiles
Personal workstation setup for macOS & Omarchy — Ansible + chezmoi
https://github.com/deligoez/dotfiles
ansible chezmoi dotfiles kanata macos neovim
Last synced: 3 months ago
JSON representation
Personal workstation setup for macOS & Omarchy — Ansible + chezmoi
- Host: GitHub
- URL: https://github.com/deligoez/dotfiles
- Owner: deligoez
- License: mit
- Created: 2020-02-23T18:46:04.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2026-04-04T13:21:58.000Z (3 months ago)
- Last Synced: 2026-04-04T13:26:34.884Z (3 months ago)
- Topics: ansible, chezmoi, dotfiles, kanata, macos, neovim
- Language: Shell
- Homepage: https://dotfiles.deligoz.me
- Size: 118 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Dotfiles
Personal workstation setup for macOS (and eventually Omarchy/Arch Linux), powered by **Ansible** + **Chezmoi**.
Idempotent — safe to run multiple times.
## Install
On a fresh macOS installation:
```bash
curl -fsSL dotfiles.deligoz.me | zsh
```
To skip macOS system preferences:
```bash
curl -fsSL dotfiles.deligoz.me | zsh -s -- --skip-tags macos-defaults
```
## Re-apply
```bash
dotfiles # full setup
dotfiles --skip-tags macos-defaults # skip macOS preferences
dotfiles --tags homebrew # only Homebrew packages
dotfiles --tags chezmoi # only dotfile configs
dotfiles --tags go-tools # only Go tools + rp bootstrap
dotfiles --tags ssh # only SSH key setup
```
## What It Does
The bootstrap script and subsequent `dotfiles` runs execute these steps in order:
| # | Step | Tag | What |
|---|------|-----|------|
| 1 | **macOS Defaults** | `macos-defaults` | Locale, desktop, menu bar, input, Finder, Dock, app settings |
| 2 | **Homebrew** | `homebrew` | Taps, formulae, casks, Mac App Store apps from `Brewfile` |
| 3 | **Default Apps** | `defaults` | Chrome as browser, Ghostty as terminal |
| 4 | **Shell** | `shell` | Fish as default shell |
| 5 | **Chezmoi** | `chezmoi` | Dotfiles + private repo via `.chezmoiexternal.yaml` |
| 6 | **SSH** | `ssh` | Ed25519 key generation, macOS Keychain, GitHub upload |
| 7 | **Go Tools** | `go-tools` | Tools from `go-tools.yml` + `rp bootstrap` for repo cloning |
## Structure
```
config.yml User settings (hostname, timezone, languages)
Brewfile Homebrew packages (~180 items)
go-tools.yml Go tools installed via `go install`
bootstrap.sh Entry point for clean installs
home/ Chezmoi-managed dotfiles
├── .chezmoiexternal.yaml Pulls dotfiles-private into ~/.config/rp/
├── .chezmoi.toml.tmpl Chezmoi config template
├── dot_config/
│ ├── fish/ Shell config, aliases, paths
│ ├── ghostty/ Terminal config + themes
│ └── starship.toml Prompt config
├── dot_gitconfig Git config
├── dot_gitignore_global Global gitignore
└── dot_ssh/ SSH config
ansible/
├── site.yml Main playbook
├── inventory.yml Host groups (macos / omarchy)
├── requirements.yml Galaxy collections
└── roles/macos/tasks/
├── main.yml Task orchestrator
├── locale.yml Languages, region, 24h time, metric
├── desktop.yml Appearance, widgets, wallpaper, Siri
├── menubar.yml Bluetooth, WiFi, Clock visibility
├── input.yml Autocorrect, key repeat, press-and-hold
├── finder.yml View, search, save dialogs, .DS_Store
├── dock.yml Apps, icon size, auto-hide, animations
├── apps.yml TextEdit, Safari developer tools
├── homebrew.yml Brew bundle + MAS apps
├── defaults.yml Default browser & terminal
├── shell.yml Fish as default shell
├── chezmoi.yml Dotfile deployment
├── ssh.yml SSH key + GitHub integration
└── go-tools.yml Go tools + rp bootstrap
archive/ Legacy setup scripts (reference only)
```
## Config Files (via Chezmoi)
| Config | Manages |
|--------|---------|
| **Fish** | Aliases, abbreviations, paths, env vars |
| **Ghostty** | Font, themes (light/dark auto-switch), padding |
| **Starship** | Minimal prompt with git status |
| **Git** | User, push config, difftool (difft) |
| **SSH** | Ed25519 key, macOS Keychain integration |
Update configs across machines:
```bash
chezmoi update
```
## Customization
Edit `config.yml` before running:
```yaml
hostname: deligoez-mac
timezone: Europe/Istanbul
region: TR
languages:
- en-TR
- tr-TR
- de-DE
```
Add Go tools to `go-tools.yml`:
```yaml
go_tools:
- { name: "rp", pkg: "github.com/deligoez/rp@latest" }
- { name: "tp", pkg: "github.com/deligoez/tp@latest" }
```
## License
MIT © Yunus Emre Deligöz