Clone into ~/dev/dotfiles (path assumed by scripts):
mkdir -p ~/dev && git clone <repo> ~/dev/dotfiles && cd ~/dev/dotfiles- Run the provisioner first (installs system packages, brew/apt/etc.):
- macOS:
./provisioners/macos-new.sh - WSL (Ubuntu):
./provisioners/wsl.sh - Debian (legacy):
./provisioners/deb.sh - Windows:
./provisioners/win.ps1
- macOS:
- Then run
./installto wire the dotfiles into~. - macOS only:
chsh -s /opt/homebrew/bin/bashandgit lfs install. - WSL only: finish the Doom Emacs steps printed by
wsl.sh(install nerd-icons fonts,copilot-install-server, create GitHub token for magit/forge in~/.authinfo.gpg).
To see exactly what packages the provisioner installs, read the provisioner script — there's no separate manifest. macos-new.sh is the current macOS reference; macos.sh is kept only as a legacy MacPorts / scientific-stack reference and is not run on new machines.
linkfiles/.*— symlinks each entry into~(solinkfiles/.bashrc→~/.bashrc,linkfiles/.config→~/.config, etc.). Skips if the target exists; pass-fto force-overwrite.copyfiles/.*— copies into~(not symlinks). Use this for files that will accumulate secrets and must not be version-controlled.- Runs
git submodule update --initand bootstraps vim-plug for vim + neovim.
Re-running is safe; each entry is skip-if-exists unless -f.
After ./install (and a fresh shell), confirm:
-
bash --versionshows a 5.x from/opt/homebrew/bin/bashon macOS (not/bin/bash). -
which ls grep findpoint at brew'sgnubindirs on macOS (GNU, not BSD). -
echo $PATH | tr : '\n' | headshows brew / conda / cargo / user ahead of system. -
declare -F | grep -E 'emacsd|nd|dotsource'→ functions are loaded. -
emacsdstarts a daemon;emc <somefile>attaches a client. -
vimopens and plugins are installed (:PlugStatus). -
tmuxstarts with the expected keybindings.
scutil --get ComputerName(macOS) orhostname -s(Linux/WSL).- Create
bashfuncs/<hostname>for host-specific init (conda path, nvm, welcome banner, etc.). Generic/portable things belong in a regularbashfuncs/<feature>module, not in the per-host file. - Add an
elif [ "$COMPUTERNAME" = "<hostname>" ]branch inbashfuncs/macos(or the Linux/WSL equivalent) thatdotsources it.
See CLAUDE.md and bashfuncs/CLAUDE.md for the full map — layout, PATH model, Doom Emacs setup, provisioner differences.
Old reason this repo existed. Notes kept for occasional revival.
sudo port -f install neomutt +idn +lmdb +notmuch +ssl
sudo port -f install offlineimapCopy .offlineimaprc to the home directory. Replace the <REDACTED> line with a gmail device password.
Export the macOS trust store: Keychain Access → System Roots → Certificates → CMD-A → CMD-SHIFT-E to a single .pem. Place at ~/ca-certs/certs.pem (matches the path in .offlineimaprc).
On Linux, use sslcacertfile = /etc/ssl/certs/ca-certificates.crt instead.
Run offlineimap -o to fetch first time. If you have an offline copy of your mail, rsync that first — far faster than a cold sync. Put offlineimap in cron to restart it on crash (acts as a daemon, so it no-ops if already running).
pdftotextvia brewpoppleratool(archives),w3m,elinks