Problem
Shell configs (.bashrc, .zshrc, .zshenv, .profile, plugin managers) are a major part of what makes a machine 'this machine', but Shall has no grammar or detection for them. Users must manually write link: lines for each file.
Current behavior
No shell-config-specific grammar. No discovery. Users can use dotfiles: or link: to place shell files, but must identify and declare each one by hand.
Proposed behavior
Detect shell configurations and produce appropriate declarations:
- Shell rc files:
.bashrc, .zshrc, .zprofile, .zshenv, .bash_profile, .profile, .config/fish/config.fish
- Plugin managers: oh-my-zsh (
\~/.oh-my-zsh), zinit/zplug/zsh-autosuggestions (from .zshrc parsing), nvm/fnm/pyenv/rbenv (version managers)
- Interactive configs:
.inputrc, .lesskey, .tmux.conf, .screenrc
- Git config:
.gitconfig, .gitignore_global, .config/gh/
Each should map to a link: or dotfiles: declaration pointing to wherever the source lives (dotfiles repo, \~/.config, etc.).
Scope questions
- Plugin managers often install into their own directory (
\~/.oh-my-zsh, \~/.nvm). Should adopt scan their contents or just detect their presence?
- Shell configs frequently contain machine-specific paths or secrets. Should adopt redact or skip sensitive lines?
- Should fish/zsh/bash be treated as separate detection scopes or unified?
Problem
Shell configs (
.bashrc,.zshrc,.zshenv,.profile, plugin managers) are a major part of what makes a machine 'this machine', but Shall has no grammar or detection for them. Users must manually writelink:lines for each file.Current behavior
No shell-config-specific grammar. No discovery. Users can use
dotfiles:orlink:to place shell files, but must identify and declare each one by hand.Proposed behavior
Detect shell configurations and produce appropriate declarations:
.bashrc,.zshrc,.zprofile,.zshenv,.bash_profile,.profile,.config/fish/config.fish\~/.oh-my-zsh), zinit/zplug/zsh-autosuggestions (from.zshrcparsing), nvm/fnm/pyenv/rbenv (version managers).inputrc,.lesskey,.tmux.conf,.screenrc.gitconfig,.gitignore_global,.config/gh/Each should map to a
link:ordotfiles:declaration pointing to wherever the source lives (dotfiles repo,\~/.config, etc.).Scope questions
\~/.oh-my-zsh,\~/.nvm). Should adopt scan their contents or just detect their presence?