dotfiles/bootstrap.sh
Jonny Barnes e08861b1c6
Wrap markdown at 80 with a colour column guide
Hand-wrapping CLAUDE.md showed there was no visual guide for line length.
textwidth makes gq reflow to 80 and colorcolumn marks column 81, markdown
only so PHP is unaffected. The ftplugin directory is linked whole so later
filetypes need no bootstrap change.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-31 16:28:18 +00:00

73 lines
3.8 KiB
Shell
Executable file

#!/usr/bin/env zsh
# Current dir
BASEDIR=$(pwd)
# ln the various files
echo "Sym-linking the various config files"
test -L $HOME/.gitignore || ln -f -s $BASEDIR/gitignore $HOME/.gitignore
test -L $HOME/.hushlogin || ln -f -s $BASEDIR/hushlogin $HOME/.hushlogin
test -L $HOME/.tmux.conf || ln -f -s $BASEDIR/tmux $HOME/.tmux.conf
test -L $HOME/.tmux-light.conf || ln -f -s $BASEDIR/tmux-light.conf $HOME/.tmux-light.conf
test -L $HOME/.tmux-dark.conf || ln -f -s $BASEDIR/tmux-dark.conf $HOME/.tmux-dark.conf
test -d $HOME/.config/sheldon || mkdir $HOME/.config/sheldon
test -L $HOME/.config/sheldon/plugins.toml || ln -f -s $BASEDIR/sheldon.toml $HOME/.config/sheldon/plugins.toml
test -L $HOME/.zsh || ln -f -s $BASEDIR/zsh $HOME/.zsh
test -L $HOME/.zshrc || ln -f -s $BASEDIR/zshrc.zsh $HOME/.zshrc
test -d $HOME/.config/delta || mkdir $HOME/.config/delta
test -L $HOME/.config/delta/themes.gitconfig || ln -f -s $BASEDIR/delta-themes.gitconfig $HOME/.config/delta/themes.gitconfig
# If ghostty is installed on the system then setup the config
if (( ${+commands[ghostty]} )); then
test -d $HOME/.config/ghostty || mkdir $HOME/.config/ghostty
test -L $HOME/.config/ghostty/config || ln -f -s $BASEDIR/ghostty/config $HOME/.config/ghostty/config
test -d $HOME/.config/ghostty/themes || mkdir $HOME/.config/ghostty/themes
test -L $HOME/.config/ghostty/themes/tangere-dark.conf || ln -f -s $BASEDIR/ghostty/themes/tangere-dark $HOME/.config/ghostty/themes/tangere-dark.conf
test -L $HOME/.config/ghostty/themes/tangere-light.conf || ln -f -s $BASEDIR/ghostty/themes/tangere-light $HOME/.config/ghostty/themes/tangere-light.conf
fi
# setup gpg conf
test -d $HOME/.gnupg || mkdir $HOME/.gnupg
cp -f $BASEDIR/gnupg/common.conf $HOME/.gnupg/common.conf
cp -f $BASEDIR/gnupg/dirmngr.conf $HOME/.gnupg/dirmngr.conf
cp -f $BASEDIR/gnupg/gpg.conf $HOME/.gnupg/gpg.conf
chmod 700 $HOME/.gnupg
chmod 640 $HOME/.gnupg/common.conf
chmod 640 $HOME/.gnupg/dirmngr.conf
chmod 640 $HOME/.gnupg/gpg.conf
echo "Setting up NeoVim"
test -d $HOME/.config/nvim || mkdir -p $HOME/.config/nvim
test -d $HOME/.local/share/nvim || mkdir -p $HOME/.local/share/nvim
test -L $HOME/.config/nvim/init.lua || ln -f -s $BASEDIR/neovim/init.lua $HOME/.config/nvim/init.lua
test -L $HOME/.config/nvim/nvim-pack-lock.json || ln -f -s $BASEDIR/neovim/nvim-pack-lock.json $HOME/.config/nvim/nvim-pack-lock.json
test -d $HOME/.config/nvim/lua || mkdir -p $HOME/.config/nvim/lua
test -L $HOME/.config/nvim/lua/config || ln -f -s $BASEDIR/neovim/config $HOME/.config/nvim/lua/config
test -d $HOME/.config/nvim/lsp || mkdir -p $HOME/.config/nvim/lsp
test -L $HOME/.config/nvim/lsp/phpactor.lua || ln -f -s $BASEDIR/neovim/lsp/phpactor.lua $HOME/.config/nvim/lsp/phpactor.lua
test -d $HOME/.config/nvim/after || mkdir -p $HOME/.config/nvim/after
test -L $HOME/.config/nvim/after/ftplugin || ln -f -s $BASEDIR/neovim/after/ftplugin $HOME/.config/nvim/after/ftplugin
# Claude Code statusline
test -d $HOME/.claude || mkdir $HOME/.claude
ln -f -s $BASEDIR/claude/statusline.isaacaudet.sh $HOME/.claude/statusline.sh
# Copy rather than symlink, so an ad-hoc `git config --global` writes to $HOME
# and not into the repo.
echo "For compatibility we shall copy the global gitconfig"
cp $BASEDIR/gitconfig $HOME/.gitconfig
# Identity and signing live in ~/.gitconfig.local, which the above includes.
# It is per-machine and untracked, so seed it from the template. Never
# overwrite an existing one: it holds the real signing key.
test -e $HOME/.gitconfig.local || {
echo "Seeding ~/.gitconfig.local from template — fill in your identity"
cp $BASEDIR/gitconfig.local.template $HOME/.gitconfig.local
}
# Copy the progs into the local bin dir
rsync -av --chmod=+x $BASEDIR/bin/ $HOME/.local/bin/
# Source zshrc
echo "And finally, source the .zshrc"
source $HOME/.zshrc