2016-04-08 01:39:33 +01:00
|
|
|
#!/usr/bin/env zsh
|
|
|
|
|
|
|
|
|
|
# Current dir
|
|
|
|
|
BASEDIR=$(pwd)
|
|
|
|
|
|
|
|
|
|
# ln the various files
|
2016-07-13 13:38:11 +01:00
|
|
|
echo "Sym-linking the various config files"
|
2016-04-08 03:42:12 +01:00
|
|
|
test -L $HOME/.gitignore || ln -f -s $BASEDIR/gitignore $HOME/.gitignore
|
2016-04-08 03:37:25 +01:00
|
|
|
test -L $HOME/.hushlogin || ln -f -s $BASEDIR/hushlogin $HOME/.hushlogin
|
2017-12-10 12:01:30 +00:00
|
|
|
test -L $HOME/.tmux.conf || ln -f -s $BASEDIR/tmux $HOME/.tmux.conf
|
Follow light/dark appearance in the tmux status bar
The status bar was five hardcoded tangere-dark colours, so in light mode the
pale #fdfdd9 text landed on a white background and became unreadable. That was
the real reason Auto appearance "never worked with the terminal setup" — ghostty
was switching correctly all along.
Split the colours into tmux-light.conf and tmux-dark.conf. The dark file is
extracted byte-exact from the previous config; the light file is the same layout
with each colour swapped for the tangere-light palette entry at the same index,
so roles are preserved (text on an accent uses the theme background, which
inverts from #1a2938 to #fdfdfa).
tmux 3.6+ learns the terminal's theme over OSC 2031, so this keys off the
appearance change itself rather than a schedule, and behaves identically whether
that came from Auto at sunrise/sunset or a manual toggle. Three hooks: the two
theme hooks react to a change, and client-attached covers a client attaching
mid-way, since those two only fire on a change. Sourcing is idempotent so the
overlap is harmless.
This replaces the dark-mode-notify launchd agent removed in 59d5622, which could
not have worked: it re-sourced .zshrc inside each shell, but the status bar
belongs to the tmux server.
Verified by round trip: flipping to Light switched #{client_theme} and applied
the light palette, and returning to Dark restored it. A running nvim does not
follow a live change (docs: the TUI sets 'background' on startup); noted in the
README.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-09 12:38:16 +01:00
|
|
|
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
|
2024-07-06 11:44:31 +01:00
|
|
|
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
|
2018-01-24 15:27:12 +00:00
|
|
|
test -L $HOME/.zsh || ln -f -s $BASEDIR/zsh $HOME/.zsh
|
|
|
|
|
test -L $HOME/.zshrc || ln -f -s $BASEDIR/zshrc.zsh $HOME/.zshrc
|
2026-01-30 14:42:51 +00:00
|
|
|
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
|
2016-04-08 01:39:33 +01:00
|
|
|
|
2025-01-18 21:18:34 +00:00
|
|
|
# If ghostty is installed on the system then setup the config
|
|
|
|
|
if (( ${+commands[ghostty]} )); then
|
2025-10-26 11:18:04 +00:00
|
|
|
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
|
2025-01-18 21:18:34 +00:00
|
|
|
fi
|
|
|
|
|
|
2024-04-29 18:22:54 +01:00
|
|
|
# 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
|
|
|
|
|
|
2024-07-12 13:07:43 +01:00
|
|
|
echo "Setting up NeoVim"
|
2026-02-13 22:25:08 +00:00
|
|
|
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
|
2026-08-08 13:57:02 +01:00
|
|
|
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
|
2026-05-31 20:33:23 +01:00
|
|
|
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
|
2026-02-15 17:03:34 +00:00
|
|
|
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
|
2024-07-12 13:07:43 +01:00
|
|
|
|
2026-03-28 16:51:14 +00:00
|
|
|
# Claude Code statusline
|
|
|
|
|
test -d $HOME/.claude || mkdir $HOME/.claude
|
2026-08-08 11:54:05 +01:00
|
|
|
ln -f -s $BASEDIR/claude/statusline.isaacaudet.sh $HOME/.claude/statusline.sh
|
2026-03-28 16:51:14 +00:00
|
|
|
|
2026-08-09 09:57:19 +01:00
|
|
|
# Copy rather than symlink, so an ad-hoc `git config --global` writes to $HOME
|
|
|
|
|
# and not into the repo.
|
2026-02-13 21:04:50 +00:00
|
|
|
echo "For compatibility we shall copy the global gitconfig"
|
2016-04-08 01:39:33 +01:00
|
|
|
cp $BASEDIR/gitconfig $HOME/.gitconfig
|
|
|
|
|
|
2026-08-09 09:57:19 +01:00
|
|
|
# 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
|
|
|
|
|
}
|
|
|
|
|
|
2025-03-16 16:13:47 +00:00
|
|
|
# Copy the progs into the local bin dir
|
|
|
|
|
rsync -av --chmod=+x $BASEDIR/bin/ $HOME/.local/bin/
|
|
|
|
|
|
2016-04-08 01:39:33 +01:00
|
|
|
# Source zshrc
|
2016-07-13 13:38:11 +01:00
|
|
|
echo "And finally, source the .zshrc"
|
2016-04-08 01:39:33 +01:00
|
|
|
source $HOME/.zshrc
|