feat: shell + dotfiles setup for a fresh box
Two layers with a deliberate privilege split: setup.sh does the root work (apt, rustup, cargo tools, starship, chsh) and hands off to chezmoi, which owns everything under $HOME. Tools are built with `cargo install --locked` to match the versions currently running rather than whatever apt ships, at the cost of a 10-20 min cold setup. Excluded on purpose: the atuin sync key and ~/.git-credentials (secrets), ~/.claude/settings.json (per-box decision), fnm/opencode conf.d (out of scope), and fish_variables (machine-local). chezmoi tracks only the executable and private attributes and derives modes from the umask, so setup.sh pins umask 022 and atuin uses private_ to keep 0700/0600. Without both, a 002 umask silently relaxes them to 0775/0664. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
27
home/.chezmoiignore
Normal file
27
home/.chezmoiignore
Normal file
@@ -0,0 +1,27 @@
|
||||
# Never manage these — they are secrets or machine-local runtime state.
|
||||
# chezmoi will neither read them into source state nor write them to the target.
|
||||
|
||||
# Git credential store (plaintext tokens — .gitconfig sets helper=store)
|
||||
.git-credentials
|
||||
|
||||
# Atuin runtime state + sync encryption key.
|
||||
# The key is tracked by hand in secrets.yml; restore with `atuin login`.
|
||||
.local/share/atuin/**
|
||||
|
||||
# Claude runtime state — history, per-project memory, session data.
|
||||
# Only statusline-command.sh is managed. settings.json is deliberately NOT
|
||||
# tracked: it pins the model and sets skipDangerousModePermissionPrompt, which
|
||||
# is a per-box decision. Set it by hand on each machine.
|
||||
.claude/projects/**
|
||||
.claude/todos/**
|
||||
.claude/statsig/**
|
||||
.claude/.caveman-active
|
||||
.claude/settings.json
|
||||
.claude/settings.local.json
|
||||
|
||||
# Fish machine-local state (generated by fish itself)
|
||||
.config/fish/fish_variables
|
||||
|
||||
# Out of scope for this repo (installed by their own installers, if at all)
|
||||
.config/fish/conf.d/fnm.fish
|
||||
.config/fish/conf.d/dtop.env.fish
|
||||
Reference in New Issue
Block a user