- Ingredients...
- ...prepared the way I like it...
- ...so that, I handcraft my sandwich...
- ...quickly, even in a new kitchen
It also reminds me how I like my sandwich, coz sometimes I forget.
Borrowed from XKCD 149, BTW.
- stuff that might not suit your workflow!
- might not work for anything other than macosx as of now.
# 1. Sign in to iCloud.
# 2. Install all available updates from System Settings → General → Software Update.
# 3. Set the Mac hostname, replacing xxx when needed:
sudo scutil --set ComputerName "Ghost XXX"
sudo scutil --set LocalHostName "ghost-xxx"
sudo scutil --set HostName "ghost-xxx"
# 4. Install Homebrew and the bootstrap tools
# Install Homebrew from https://brew.sh/
# Make it available in the current shell
eval "$(/opt/homebrew/bin/brew shellenv)"
# 5. Install tools to bootstrap the repo
brew install just stow
# 6. Clone the repository
mkdir -p ~/code/github.com/hrmnjt
git clone https://github.com/hrmnjt/dev.git ~/code/github.com/hrmnjt/dev
cd ~/code/github.com/hrmnjt/dev
# Create the repository-local, Git-ignored model cache
mkdir -p _models
# 7. Install everything tracked in Brewfile
just brewinst
# 8. Deploy the dotfiles
just stowall
# 9. Install and configure Pi
# 9.1. Pi - https://pi.dev/docs/latest/quickstart#install
# 9.2. Install dependencies for pi
just pi-deps
# 9.3. Initialize Pi's intentional settings
if [[ ! -f ~/.pi/agent/settings.json ]]; then
cp ~/.pi/agent/settings.template.json ~/.pi/agent/settings.json
fi
# 9.4. Build the Pi sandbox
just gondolin-image
# Restart the login shell, then continue with step 10
exec zsh -l
# 10. Configure Git and GitHub SSH
just gitsetup
just ghsshkey
# Add the copied public key at https://github.com/settings/keys
ssh -T git@github.com
# After SSH authentication succeeds, update this checkout:
git remote set-url origin git@github.com:hrmnjt/dev.git
# 11. Complete required app permissions
# 11.1. Grant AeroSpace Accessibility permission; see the aerospace/README.md
# 11.2. Grant Ghostty or the active terminal Accessibility and Automation
# permissions when using the Ivanti VPN commands; see the ivanti/README.md
# 11.3. Sign in to required browser, email, messaging, and work applications
# 12. Gruvbox macOS appearance
just macos-gruvbox
# 13. Local models
# 13.1. Deploy the llama.cpp package based on llama/README.md
llm start
# 13.2. On first use in Pi, run /login llama.cpp
# 13.3. Use /llama to download or load a model, then select it with /model
# 14. Enable optional integrations
# 14.1. Install Pi's generated Herdr integration when using Herdr workspaces:
herdr integration install pi
herdr integration status
# 14.2. Activate the Stow-deployed Herdr default-tabs plugin:
herdr plugin link ~/.config/herdr/local-plugins/default-tabs
herdr plugin list --plugin hrmnjt.default-tabs
# 14.3. Brave configuration
# - Brave extensions: Bitwarden, Readwise Highlighter, and Dark Reader.
# - Install the Gruvbox Slate Brave theme.- AeroSpace
- Ghostty
- Git
- Herdr
- Ivanti VPN
- Lazygit
- Local llama.cpp inference
- Neovim
- Pi agent package
- Starship
- Wallpapers
- Zed
- Zsh
Install the package, add it to Brewfile with a descriptive comment, and verify
that the bundle is complete:
brew install <package>
# Edit Brewfile
just brewcheckInspect packages installed locally but missing from Brewfile with:
just brewdiffRemove untracked packages only after reviewing that output:
just brewcleanBootstrap the llama.cpp router when local inference is needed. It starts without loading a model:
llm start
llm statusThen, inside Pi:
- Run
/login llama.cpponce and accept the local default URL. - Run
/llamato download, load, or unload models. - After loading a model, run
/modeland select its actual llama.cpp model ID.
_models/ is the single Git-ignored llama.cpp cache. Download and manage every
model through /llama; do not maintain a separate manual GGUF layout. See the
llama.cpp guide for router deployment, Hugging Face
authentication, service checks, and model storage.
Top-level names determine whether just stowall deploys a directory:
| Form | Meaning |
|---|---|
<name>/ |
Stow package whose contents are symlinked into $HOME |
_<name>/ |
Repository-local data or helpers that must not be Stowed |
The [!_]*/ glob in Justfile enforces this convention. For example,
llama/ is deployed, while _scripts/ and _models/ remain in the repository.
Prefix new repository-local top-level directories with _.