Don't forget to install all the vim bundle submodules:
git submodule update --init
Then link up as many files as you want to use...
cd ~ ln -sf config_files/vimrc ~/.vimrc ln -sf config_files/vim ~/.vim ln -sf config_files/irssi ~/.irssi ln -sf config_files/gvimrc ~/.gvimrc ln -sf config_files/ackrc ~/.ackrc
Symlink the shared Claude Code config into ~/.claude/:
mkdir -p ~/.claude ln -sf ~/code/dotfiles/claude/CLAUDE.md ~/.claude/CLAUDE.md ln -sf ~/code/dotfiles/claude/skills ~/.claude/skills ln -sf ~/code/dotfiles/claude/settings.json ~/.claude/settings.json ln -sf ~/code/dotfiles/claude/statusline.sh ~/.claude/statusline.sh ln -sf ~/code/dotfiles/claude/hooks ~/.claude/hooks
Machine-specific overrides (extra permissions, local tools) go in
~/.claude/settings.local.json which is not tracked in this repo.
mkdir -p ~/.config/systemd/user
for svc in claude-worker@.service voice-inbox.service; do
ln -sf ~/code/dotfiles/systemd/user/$svc ~/.config/systemd/user/$svc
done
systemctl --user daemon-reload
systemctl --user enable --now claude-worker@1
systemctl --user enable --now voice-inbox
voice-inbox.service reads its config from ~/code/voice-inbox/.env (not tracked).
for svc in claude-inbox-watcher.service telegram-webhook.service; do
sudo ln -sf ~/code/dotfiles/systemd/system/$svc /etc/systemd/system/$svc
done
sudo systemctl daemon-reload
sudo systemctl enable --now claude-inbox-watcher telegram-webhook
telegram-webhook.service sources ~/.secret_env for TELEGRAM_BOT_TOKEN etc.
sudo ln -sf ~/code/dotfiles/nginx/sites-available/telegram-webhook /etc/nginx/sites-available/telegram-webhook sudo ln -sf /etc/nginx/sites-available/telegram-webhook /etc/nginx/sites-enabled/telegram-webhook sudo nginx -t && sudo systemctl reload nginx
Site depends on a Let's Encrypt cert at /etc/letsencrypt/live/vps.chrismdp.com/
— provision separately with certbot --nginx.
What's in each file:
- CLAUDE.md - Global instructions, communication style, tool usage rules
- skills/ - Skill definitions (submodule) for slash commands
- settings.json - Permissions, model preference, hooks, statusline config.
All paths use
~so they're portable across machines. - statusline.sh - Custom status bar with context window, API usage bars,
vault sync status (✓↑ = committed/synced, ♡ = heartbeat), and rate limit info.
Reads runtime credentials from
~/.claude/.credentials.json(not tracked). - systemd/user/ - User systemd unit files (claude-worker template, voice-inbox).
- systemd/system/ - System-level systemd unit files (claude-inbox-watcher, telegram-webhook).
- nginx/sites-available/ - Nginx vhost config for
vps.chrismdp.com(telegram-webhook + review board + voice inbox). - crontab.vps - VPS crontab. Install with
crontab ~/code/dotfiles/crontab.vps.