source order:
config.fish >
local.sh,
$platform.fish > common.fish,
local.fish
.zshrc >
local.sh,
zsh_$platform > zsh_common,
zsh_local
user should modify:
- ~/.config/local.sh # variables
- ~/.config/fish/local.fish # fish overrides
- ~/.config/zsh/zsh_local # zsh overrides
- if new files are added to dotfiles/src, then run
restowto update symlinks
- install 1Password and sign in
- 1Password Settings → Developer:
- enable Use the SSH Agent
- enable Integrate with 1Password CLI
- enable Generate SSH config file with bookmarked hosts
Run from the native macOS Terminal (not alacritty):
curl -fsSL https://raw.githubusercontent.com/tim-codes/dotfiles/main/scripts/bootstrap | zshThis installs Xcode Command Line Tools, wires ~/.ssh/config to the 1Password
SSH agent, clones this repo to ~/dev/dotfiles (SSH, with submodules), then
runs scripts/init: local config files, homebrew + deps, stow symlinks, fish
plugins, fonts, alacritty (cask), tmux plugins (tpm), nvm/node, rust, poetry.
Safe to re-run at any point if a step fails.
- set the git signingkey in
~/.gpg.gitconfig— commit signing uses the 1Password SSH key (see the "Git" item in 1Password):
[user]
signingkey = xxx- where there are multiple ssh keys for the same domain, see (a) below
- remaining app installs: Arc Browser, SetApp, JetBrains Toolbox + VSCode
(a) where there is multiple e.g. github ssh keys for the same domain, then download the public keys to ~/.ssh/, and add entries for unique remote names to ~/.ssh/config:
Host github.com
hostname github.com
identityfile ~/.ssh/github.pub
identitiesonly yes
Host skygit
hostname github.com
identityfile ~/.ssh/github_sky.pub
identitiesonly yes
Host *
IdentityAgent "~/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock"
--> then use e.g. gcl git@skygit:<workspace>/<repo>.git for the origin remote
- https://switowski.com/blog/favorite-cli-tools
- https://gist.github.com/edwhad/a25f728e6add3f6d1f7a483810e9d555
- https://bmaingret.github.io/blog/2022-02-15-1Password-gpg-git-seamless-commits-signing
- when running the init script, it is most reliable to open zsh in native terminal (not alacritty or another emulator), then run eg
./dev/dotfiles/scripts/init - storing GPG keys in 1password as a reference, but they are not integrated, the local GPG key is used for signing
- maybe this tool will help with the bash->fish PATH loading: https://github.com/edc/bass
- todo: the fisher install step is not idempotent and is super flaky between different shells