Skip to content

arraywaves/.dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

.dotfiles

Bootstrap new machine

Quickly bootstrap a new macOS device; installs Homebrew, git, Oh My Zsh, all symlinks, and runs brew bundle for the chosen environment (personal | work).

curl -fsSL https://raw.githubusercontent.com/arraywaves/.dotfiles/main/bootstrap.sh | bash

The script will prompt for:

  • SHELL_ENV: work or personal (default: personal)
  • U_CTX: device identifier, e.g. your username (default: hostname)
  • GIT_USER: git username (default: same as U_CTX)

After it completes, add any API keys to ~/.dotfiles/.env and open a new terminal.

Safe to re-run, all steps are idempotent.


Manual setup

Notes for individual packages.

homebrew

Install: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Install packages: brew bundle --file=path-to-brewfile OR export HOMEBREW_BUNDLE_FILE=path-to-brewfile brew bundle

brew bundle/Brewfile Docs

zsh

Add to .zshrc: source ~/.dotfiles/shared/zsh/.ohmyzsh

Add custom plugins: ln -s ~/.dotfiles/shared/zsh/plugins/pluginname ~/.oh-my-zsh/custom/plugins/pluginname

nushell

Nushell is the primary shell. Zsh (with ohmyzsh) remains fully configured as a fallback — run ^zsh from within nushell to drop into a full zsh session.

Symlink configs (macOS):

ln -s ~/.dotfiles/shared/nushell/config.nu ~/Library/Application\ Support/nushell/config.nu
ln -s ~/.dotfiles/shared/nushell/env.nu ~/Library/Application\ Support/nushell/env.nu

Set as default shell:

grep -qF "$(which nu)" /etc/shells || echo "$(which nu)" | sudo tee -a /etc/shells
chsh -s "$(which nu)"

Symlink scaffold wrapper:

ln -s ~/.dotfiles/shared/bin/scaffold ~/.local/bin/scaffold
chmod +x ~/.dotfiles/shared/bin/scaffold

Files:

  • shared/nushell/env.nu — PATH (Homebrew, pyenv) and .env loading
  • shared/nushell/config.nu — aliases, prompt, and nushell commands (tmux-dev, tmux-cli, hh, scaffold)

tmux

Symlink conf: ln -s ~/.dotfiles/shared/tmux/.tmux.conf ~/.tmux.conf

Symlink tmux macro file: ln -s ~/.dotfiles/shared/zsh/custom/tmux.zsh ~/.oh-my-zsh/custom/tmux.zsh

zed

Create Symlink ln -s ~/.dotfiles/shared/zed/settings.json ~/.config/zed/settings.json

peon-ping

Install:

brew install PeonPing/tap/peon-ping
peon-ping-setup --packs=cute-minimal

ghostty

Add to end of default config: config-file = /path/to/config

To launch nushell (rather than zsh) add to shared/ghostty/config: command = /opt/homebrew/bin/nu

caddy + dnsmasq

Run: TERM=xterm-256color sudo nano /opt/homebrew/etc/dnsmasq.conf Add: address=/.localhost/127.0.0.1

Run:

  • sudo mkdir -p /etc/resolver
  • echo "nameserver 127.0.0.1" | sudo tee /etc/resolver/localhost
  • sudo brew services start dnsmasq

Caddyfile location: ~/.dotfiles/caddy/Caddyfile.<env> — symlinked by bootstrap to /opt/homebrew/etc/caddy/Caddyfile.

Setting up a project in Caddyfile: projectname.localhost { reverse_proxy localhost:DEV_SERVER_PORT }

Run: caddy start to start the service in the background. caddy run to start the service in a terminal window.

infisical

Login infisical login or infisical login -i for browser-less login

Setup cd into project and run infisical init

Install pre-commit hook (per project): infisical scan install --pre-commit-hook

Add to scripts: infisical run --env=dev -- [rest of script]

claude-code

Link dotfiles global CLAUDE.md instructions to claude-code: ln -s ~/.dotfiles/shared/claude-code/CLAUDE.md ~/.claude/CLAUDE.md // instructs claude to read and write to AGENTS.md

Link dotfiles skills and agents to claude-code: rm -rf ~/.claude/skills if dir already exists ln -s ~/.dotfiles/shared/agents/skills ~/.claude/skills ln -s ~/.dotfiles/shared/claude-code/agents ~/.claude/agents

Optional: enable agent teams (experimental) export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1

Tavily MCP in .claude/settings.json add: "env": { "TAVILY_API_KEY": "tvly-YOUR_API_KEY" }

claude and run /plugin marketplace add tavily-ai/tavily-plugins and /plugin install tavily@tavily-plugins

Railway railway login --browserless

Context7 MCP claude mcp add --scope user context7 -- vpx -y @upstash/context7-mcp --api-key YOUR_API_KEY

opencode

export OPENCODE_CONFIG=path-to-opencode.json

python

Set PATH: echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc echo 'eval "$(pyenv init - zsh)"' >> ~/.zshrc source ~/.zshrc

Install Python (latest): pyenv install 3.x picks latest stable minor release in python3 automatically pyenv global 3.x.x sets system python version

vite+

Install (check homebrew if reading this): curl -fsSL https://vite.plus | bash

Commands: vp create Create a new project vp env Manage Node.js versions vp env doctor Verify your Node setup vp env off Opt out of Node management vp install Install dependencies vp migrate Migrate to Vite+ vp help

blender

Open: ~/.dotfiles/shared/blender/default.blend File > Save Startup File > Confirm

macOS Performance Tip

"If you are using macOS, add your terminal app (Ghostty, iTerm2, Terminal, …) to the approved "Developer Tools" apps in the Privacy panel of System Settings and restart your terminal app. Your Rust builds will be about ~30% faster." Source: vite+ contributing

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Contributors