Skip to content
alimfeldPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Repository files navigation

Dotfiles

Configurations to improve the CLI dev experience.

🎯 Strategy

  • Keep $HOME clean. Config, state and cache live in the standard XDG directories; $HOME holds only the few paths a tool forces.
  • No vendored plugin code. Tools install and update their own; this repo stores config.
  • One set of keys. The same vi motions everywhere, with <Space> as the editor leader and <Ctrl-Space> as the terminal prefix.
  • One clipboard. Copy in one tool, paste in another.
  • One session per worktree. Every piece of work is isolated and restorable, with its own agent and diff.
  • One look. Gruvbox-like colours everywhere.

🧰 Tools

Terminal.

Shell. Vi mode, autosuggestions, syntax highlighting, starship prompt, zoxide jumps and direnv per-directory environments.

Multiplexer, with a sesh + fzf session picker and split navigation that reaches into Neovim.

Editor. Plugins install themselves on first start; language servers start per file type.

Version control, with Neovim as the difftool and lazygit for interactive use.

Agent, installed separately.

🍎 macOS Keyboard Settings

  • Add 'U.S. International - PC' input source
  • Change ' Caps Lock' to 'Control' (Keyboard Shortcuts > Modifier Keys)
  • Disable keyboard shortcuts for 'Input Sources' (i.e. Ctrl-Space)
  • Set 'Key repeat rate' to 'Fast'

🛠️ Installation

Requires Homebrew. Install with stow:

chsh -s /bin/zsh  # Ghostty and tmux use the login shell
git clone https://github.com/alimfeld/dotfiles ~/.dotfiles
cd ~/.dotfiles
mkdir -p ~/.config ~/.local/bin ~/.agents/skills ~/.pi/agent/extensions
./dot-local/bin/brew-install  # core tools, dependencies and language servers
stow .
# then install pi (see pi.dev)

The directories are created first because they are shared with other stow sources (e.g. a work dotfiles repo).

Machine-local overrides go in ~/.config/local/ (zsh.zsh, tmux.conf, git.inc), which zsh, tmux and git read if present. git.inc must set [user] email for repos outside github.com/alimfeld: git has no fallback identity. Edit that file, never git config --global (it writes into the stowed file above). Another repo can own that directory, e.g. a work dotfiles repo stowing dot-config/local. Neovim and Ghostty have their own untracked spots: ~/.local/share/nvim/site/plugin/ and ~/Library/Application Support/com.mitchellh.ghostty/config.ghostty.

If ~/.gitconfig exists, delete it: git reads it after ~/.config/git/config, so it silently overrides every rule above.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages