Izzy's cross-platform dotfiles — Fish + Starship + Ghostty + Mise
git clone https://github.com/zeraphie/i-dotfiles.git ~/Documents/Development/i-dotfiles
cd ~/Documents/Development/i-dotfiles && ./bootstrap.shgit clone https://github.com/zeraphie/i-dotfiles.git ~/Documents/Development/i-dotfiles
cd ~/Documents/Development/i-dotfiles && ./bootstrap.shThen in an admin PowerShell to create symlinks:
cd $HOME\Documents\Development\i-dotfiles
powershell -ExecutionPolicy RemoteSigned -File install.ps1bash <(curl -fsSL https://raw.githubusercontent.com/zeraphie/i-dotfiles/master/bootstrap.sh)Link dotfiles config into any git repo — picked files are excluded from git
via .git/info/exclude so they never get committed.
# Interactive picker (uses fzf if available, numbered list otherwise)
dotfiles link .
# Link everything at once
dotfiles link . --all
# See what's currently linked
dotfiles status .
# Remove all dotfile symlinks from a project
dotfiles unlink .| Item | Destination |
|---|---|
| Style Guide | STYLE.md |
| AI System Prompt | .rules (auto-loaded by Zed agent) |
| Zed Settings | .zed/settings.json |
| oxlint config | oxlint.json |
| commitlint config | commitlint.config.js |
| vitest config | vitest.config.js |
| CI workflow | .github/workflows/ci.yml |
# Create and init the repo
mkdir my-project && cd my-project
git init
git commit --allow-empty -m "chore: initial commit"
# Link all dotfiles config
dotfiles link . --all
# Copy project templates as a starting point
cp $DOTFILES/ai/templates/project/package.json .
cp $DOTFILES/ai/templates/project/justfile .
cp $DOTFILES/ai/templates/project/CHANGELOG.md .
# Install deps and go
bun install| Tool | Purpose |
|---|---|
| Fish | Shell |
| Starship | Prompt |
| Ghostty | Terminal (macOS / Linux) |
| Windows Terminal | Terminal (Windows) |
| Mise | Runtime version manager — replaces nvm, pyenv, rustup |
| Zed | Editor |
| Just | Task runner |
| Bun | JS runtime + package manager |
| Starship | Prompt |
i-dotfiles/
├── ai/
│ ├── STYLE.md # Coding style guide
│ ├── SYSTEM_PROMPT.md # AI assistant system prompt (paste into Zed/Claude)
│ └── templates/
│ ├── component/ # React component + SCSS template
│ ├── project/ # New project templates (package.json, justfile, CI, etc.)
│ └── zed/ # Zed editor project settings
├── bash/
│ └── bashrc_windows.sh # Git Bash config (sourced from ~/.bashrc on Windows)
├── bin/
│ └── dotfiles # dotfiles CLI (link, unlink, status)
├── fish/
│ ├── config.fish # Main Fish config
│ ├── aliases.fish # Shell aliases
│ └── functions/ # Fish functions (c, git, array_contains, array_join)
├── ghostty/
│ └── config # Ghostty terminal config
├── git/
│ └── .gitconfig # Git config + aliases
├── mise/
│ └── config.toml # Global runtime versions
├── starship/
│ └── starship.toml # Starship prompt config
├── fonts/
│ └── FiraCode/ # FiraCode Nerd Font (installed by bootstrap)
├── windows-terminal/
│ └── settings.json # Windows Terminal config (matching theme + keybindings)
├── bootstrap.sh # Cross-platform bootstrap (Mac / Linux / Windows Git Bash)
└── justfile # Dotfiles task runner
Run just from the repo root to see all available recipes.
just install # full bootstrap
just link # create shell config symlinks only
just verify # check all symlinks are correct
just pull # pull latest from origin
just edit # open dotfiles in Zed
just project-link # interactive link into current project
just project-link-all # link everything into current project
just project-unlink # remove dotfile links from current project
just project-status # show what's linked in current project
just edit-fish # open fish config
just edit-aliases # open aliases
just edit-starship # open starship config
just edit-ghostty # open ghostty config
just edit-windows-terminal # open windows terminal config
just edit-git # open gitconfig
just edit-mise # open mise config| Alias | Expands to |
|---|---|
u / uu / uuu … |
Up 1–6 directories |
b |
Back (cd -) |
l |
ls -lah |
| Alias | Expands to |
|---|---|
e |
zed |
| Alias | Expands to |
|---|---|
g |
git |
| Alias | Expands to |
|---|---|
bi |
bun install |
ba |
bun add |
bad |
bun add -d |
br |
bun run |
bx |
bunx |
| Alias | Expands to |
|---|---|
j |
just |
jl |
just --list |
| Alias | Expands to |
|---|---|
m |
mise |
mu |
mise use |
A selection of the most useful ones — see git/.gitconfig for the full list.
| Alias | Command |
|---|---|
git s |
status |
git st |
status -sb |
git a |
add -A |
git c "msg" |
commit -m "msg" |
git can |
commit --amend --no-edit |
git puu |
push -u origin HEAD |
git pf |
push --force-with-lease |
git l |
Pretty graph log |
git ll |
One-line log |
git la |
One-line log all branches |
git cob |
checkout -b |
git swc |
switch -c |
git ri |
rebase -i |
git rom |
rebase origin/main |
git ds |
diff --staged |
git undo |
reset --soft HEAD~1 |
git nuke |
reset --hard HEAD |
git sp |
stash pop |
git current |
current branch name |
git outgoing |
commits not yet pushed |
git incoming |
commits not yet pulled |
The ai/ folder contains:
STYLE.md— full coding style guide (indentation, quotes, guards, SCSS patterns, component structure, tooling, security, privacy, performance)SYSTEM_PROMPT.md— the global AI system prompt describing your style, workflow, security rules, and flagging behaviour
Add the system prompt as a default rule in Zed so it's auto-included in every agent conversation:
- Open the Agent Panel (
Ctrl+Shift+A/Cmd+Shift+A) - Click
...→ Rules... - Click
+, paste the contents ofai/SYSTEM_PROMPT.md - Name it
i-dotfiles - Click the paperclip icon (📎) to set it as a default rule
Run dotfiles link . in any repo — the AI System Prompt option links ai/SYSTEM_PROMPT.md to .rules at the project root, which Zed picks up automatically for that project.
- Research — read relevant files, ask if anything is unclear
- Plan — present a step-by-step plan, wait for approval
- Execute — one step at a time, confirm after each
- Lint & format — run oxlint + oxfmt after every change
- Flag issues — security, privacy, GDPR, and performance issues reported at end of every response (🔴 critical / 🟡 warning / 🔵 info)
| Runtime | Version |
|---|---|
| Node.js | lts |
| Python | latest |
| Bun | latest |
Install Windows Terminal from the Microsoft Store (works on Windows 10+). Then copy the settings:
- Open Windows Terminal
- Press
Ctrl+,to open Settings - Click "Open JSON file" (bottom left)
- Replace the contents with
windows-terminal/settings.jsonfrom this repo - Install FiraCode Nerd Font from the
fonts/FiraCode/directory (right-click.ttffiles -> Install)
WSL2 gives you a real Linux environment inside Windows, so you get the same Fish + Starship setup as macOS/Linux.
# In an admin PowerShell — check if WSL is already installed
wsl --status
# If not installed
wsl --install
# After reboot, open Windows Terminal and select the Ubuntu tab, then:
cd ~ && git clone https://github.com/zeraphie/i-dotfiles.git ~/i-dotfiles
cd ~/i-dotfiles && ./bootstrap.shWindows Terminal auto-detects WSL distros and adds them as profiles.
Create ~/.config/fish/local.fish for machine-specific config — it's sourced automatically and gitignored.
MIT