cole-maxwell1 0d4ba3e291 feat(zsh): add Bitwarden SSH agent support
Export SSH_AUTH_SOCK pointing to the Bitwarden SSH agent socket
(~/.bitwarden-ssh-agent.sock) on macOS, guarded by checks that the
Bitwarden application is installed and the socket file exists, so
unmodified environments are unaffected.

Also correct two indentation inconsistencies in the .local/bin PATH
export and the lsd alias else-branch.
2026-09-06 21:32:46 -05:00

Cole's Dotfiles

Personal dotfiles for zsh, Neovim, and opencode, plus a few shell scripts. The setup is managed with GNU stow, a symlink manager that links the files in this repo to their corresponding locations under the home directory.

The zsh theme and plugins are installed manually rather than through a plugin manager. The ~/.zsh directory is used to hold the git repos of any shell dependencies.

Repository layout

.
├── .zshrc                  # zsh config: PATH, history, completions, prompt, aliases
├── .config/
│   ├── nvim/               # Neovim config (init.lua, lua/, after/, queries/)
│   └── opencode/           # opencode config (commands, plugins, skills, MCP tools, rules)
└── .scripts/               # Standalone shell scripts (on $PATH)
    └── hello.sh

Everything above is relative to the home directory, which is exactly what stow . expects.

Prerequisites

Required

  • GNU stow — install with the system package manager (brew install stow, apt install stow, etc.).
  • A Nerd Font — install one and configure it in the terminal, editor, and IDE of choice. Required for icons in the prompt and lsd.

Shell theme and plugins

Clone into ~/.zsh/ so .zshrc picks them up automatically:

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/.zsh/powerlevel10k
git clone --depth=1 https://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions

Optional

  • lsd — drives the ls/ll/lt aliases in .zshrc. Without it, the aliases fall back to the system ls. (github.com/lsd-rs/lsd)

Configure a new machine

  1. Clone into the home directory:
    git clone https://github.com/cole-maxwell1/dotfiles.git ~/dotfiles
    
  2. Symlink the dotfiles into place with stow:
    cd ~/dotfiles && stow .
    
  3. Make the scripts executable:
    chmod -R u+x ~/dotfiles/.scripts/
    
  4. If this is the first run with Powerlevel10k, generate the prompt config:
    p10k configure
    
  5. Restart the shell (or exec zsh) to load the new config.

To remove the symlinks without deleting the repo:

cd ~/dotfiles && stow -D .

Running stow . again re-creates them.

Add new files or directories

Add each item to the repository at the same path it should have under the home directory. For example, opencode skills belong under ~/dotfiles/.config/opencode/skills/. Then refresh the links:

cd ~/dotfiles
stow .

If the corresponding target does not exist, Stow creates the symlink. This applies to an entire new directory such as skills and to files added inside an already-stowed directory.

If Stow reports that an existing target is neither a link nor a directory, the target is a real file that Stow will not overwrite. When the repository copy is authoritative, back up the target and rerun Stow:

mv ~/.config/opencode/opencode.jsonc ~/.config/opencode/opencode.jsonc.pre-stow-backup
cd ~/dotfiles
stow .

Repeat the backup step for every conflicting target listed by Stow. Review and remove backups only after confirming the linked configuration works.

Do not use stow --adopt for this workflow. --adopt copies the existing target into the repository, replacing the repository version, which is the opposite of making the repository authoritative.

Secrets

If ~/.secrets exists, .zshrc sources it near the top of the file so environment variables (API keys, tokens, etc.) are exported into the shell. This file is intentionally not part of the repo — create it locally and keep it out of version control.

S
Description
No description provided
Readme
206 KiB
Languages
Lua 63.4%
Shell 27.2%
TypeScript 8.4%
Tree-sitter Query 1%