# file location: ${HOME}/.gitignore # IMPORTANT: This file is COPIED (not symlinked) to its destination by install-dotfiles.rb. # Resolution rules when both this file and ${HOME}/.gitignore exist as real files: # - FIRST_INSTALL (env var set): ${HOME}/.gitignore always wins — moved here, then this file is copied back. # - Otherwise: the file with the newer mtime wins. If this source is newer or the same age, # ${HOME}/.gitignore is overwritten. If ${HOME}/.gitignore is newer, it is moved here instead. # Practical advice: always edit THIS source file first, then run install-dotfiles.rb to propagate. # If you edited ${HOME}/.gitignore directly, touch it (or ensure its mtime is newer) before running # install-dotfiles.rb so the mtime rule picks up your changes. # # If you changed PROJECTS_BASE_DIR in .shellrc from the default (~/dev), you must also update # the /dev/ entry in the "HOME DIRECTORY TOP-LEVEL FOLDERS" section and all /dev/**/ entries # in the "DEV WORKSPACE" section below to match your chosen folder name, then re-run # install-dotfiles.rb to copy the updated file to ${HOME}/.gitignore. # ══════════════════════════════════════════════════════════════════════════════ # COMMON — OS / editor noise, applies everywhere in the repo tree # ══════════════════════════════════════════════════════════════════════════════ *-journal *.bak *.iso *.log *.sqlite-shm *.sqlite-wal *.sw[nop] *.zcompdump* *db-shm *db-wal .*.log .DS_Store .thumbnails .Trash/ .~lock*# Thumbs.db # ══════════════════════════════════════════════════════════════════════════════ # macOS SYSTEM FILES — generated by the OS, never useful to track # ══════════════════════════════════════════════════════════════════════════════ /.CFUserTextEncoding /.ctsystem /.cups/ /.dmrc /.esd_auth /.fontconfig /.ICEauthority /.launchd.conf /.macromedia /.mission-control /.rnd /.sudo_as_admin_successful /.Skype /.xsession-errors* # ══════════════════════════════════════════════════════════════════════════════ # SHELL HISTORY & SESSION STATE — transient, regenerated on every login # ══════════════════════════════════════════════════════════════════════════════ /.bash_history /.bash_sessions /.irb_history /.lesshst /.node_repl_history /.p4tickets /.recently-used.xbel /.viminfo /.wget-hsts /.yahoorc /.zsh_history /.zsh_sessions/ /.zsh/ # ══════════════════════════════════════════════════════════════════════════════ # CACHES — all regenerable, keep repo size small # ══════════════════════════════════════════════════════════════════════════════ /.*.cache /.cache/ /.cargo/ /.dartServer/ /.electron/ /.electron-gyp /.gem/ /.gradle/ /.hawtjni/ /.hex/ /.ivy2/ /.java-caller/ /.local/* # Un-ignore XDG state directories for tracking user data !/.local/state/ /.local/state/* !/.local/state/postgresql/ !/.local/state/python/ !/.local/state/sqlite/ /.m2/ /.mix/archives/ /.mix/rebar /.mix/rebar3 /.mozbuild/ /.node-gyp/ /.node-stats/local-storage.json /.npm/ /.nvm/ /.nuget/ /.ollama/ /.oracle_jre_usage/*.timestamp /.packer.d/ /.parallel/ /.passenger/ /.phantomjs/ /.pki/ /.pnpm-state/pnpm-state.json /.pnpm-store/ /.pub-cache/ /.pylint.d/ /.ruby-lsp/ /.rustup/settings.toml /.rustup/toolchains/ /.rustup/update-hashes/ /.rvm/ /.sbt/ /.software-updates-run-log /.swiftpm/ /.terminfo/ /.tldrc/ /.tooling/gradle/checksums/ /.tooling/gradle/versions.json /.v8flags*/ /.vpython*/ /.yarn/berry/telemetry.json # ══════════════════════════════════════════════════════════════════════════════ # GENERATED/DERIVED FILES — created by install-dotfiles.rb or other automation # ══════════════════════════════════════════════════════════════════════════════ # Tool-specific config symlinks — only exist when tools are installed (managed by install-dotfiles.rb) # Pattern matches: config-delta-enabled.inc, config-pandoc-enabled.inc, config-plist-enabled.inc, config-sqlite3-enabled.inc, etc. /.config/git/config-*-enabled.inc # ══════════════════════════════════════════════════════════════════════════════ # BUILD TOOLS & PACKAGE MANAGERS — auto-installed, not personal data # ══════════════════════════════════════════════════════════════════════════════ /.android/ /.ansible/ /.aspnet/DataProtection-Keys/ /.boot2docker/ /.BuildServer/ /.docker/ /.chef/ /.clamtk/ /.cocoapods/ /.colima/ /.cordova/ /.cvecheck/cvecheck-runtime.properties /.dotnet/ /.eclipse/**/cache /.equo/ /.erlang-hist*/ /.erlang-history/ /.fig.dotfiles.bak/ /.fig/ /.freemind/ /.Genymobile/ /.gi_list /.gk/repoMapping.json /.gstreamer*/ /.helm/ /.helm/**/*.tgz /.heroku/ /.ideaLibSources/ /.install4j/ /.IntelliJIdea*/restart/restarter /.keepassx/ /.kube/ /.kuberlr/ /.libreoffice/ /.lima/ /.minikube/ /.mono/registry/ /.nchsoftware/ /.nix-profile/ /.org.eclipse*/ /.plugman/plugman.log /.pulse*/ /.rd/ /.RSA/ /.scalarDiagnostics/ /.sonarlint/ /.sts4/ /.sts4-jandex/ /.subversion/ /.swt/ /.talisman/bin/ /.talisman/talisman_html_report /.templateengine/dotnetcli/ /.templateengine/Rider/ /.templateengine/Visual\ Studio/ /.templateengine/Visual\ Studio/*/packages/ /.terraform.d/checkpoint_cache /.terraform.d/checkpoint_signature /.terraform.d/plugin-cache /.testcontainers.properties /.tmux/ /.TrueCrypt*/ /.vagrant.d/ /.vnc/ViewerStore /.vscod*/ /.yjp/ /.zoomus/ /app.retry node_modules/ *.fish *.lock # ══════════════════════════════════════════════════════════════════════════════ # IDE & EDITOR — workspace state, always regenerated # ══════════════════════════════════════════════════════════════════════════════ /.babel.json /.boxfuse/ .idea* /.bundle/* /.continue/calculator.py /.continue/config.py /.continue/server /.continue/sessions /.vim/autoload/plug.vim # ══════════════════════════════════════════════════════════════════════════════ # AI TOOL STATE — session caches, downloaded binaries, transient state # ══════════════════════════════════════════════════════════════════════════════ # Claude — transient/derived state only; projects/, shell-snapshots/, todos/, plugins/ are tracked /.claude.json.backup /.claude.json.backup.* /.claude/backups/ /.claude/cache/ /.claude/debug/ /.claude/shell-snapshots/snapshot-*.sh /.claude/stats-cache.json /.claude/statsig/ /.claude/todos/*.json # GitHub Copilot — pkg/ is auto-downloaded; session-state files/research are tracked for backup /.config/.copilot/ /.config/github-copilot/ /.copilot/logs/ /.copilot/pkg/ /.copilot/session-state/**/inuse.*.lock /.copilot/session-store.db-shm /.copilot/session-store.db-wal # Other AI tools /.gemini/ /.qwen/ /.safety/ # ══════════════════════════════════════════════════════════════════════════════ # XDG CONFIG ($HOME/.config) — per-tool config fragments # ══════════════════════════════════════════════════════════════════════════════ /.config/.DS_Store /.config/caffeine/log /.config/coc/extensions/package.json /.config/coc/memos.json /.config/configstore/ /.config/direnv/allow /.config/dotfiles/ /.config/fish/ /.config/gatsby/config.json /.config/gatsby/events.json /.config/gatsby/sites/ /.config/gemini/ /.config/git/gitk /.config/iterm2/ /.config/jgit/config /.config/nvim/autoload/plug.vim /.config/nvim/plugged/ /.config/simple-update-notifier/electron-builder.json /.config/sol/images_pasteboard/ /.config/sol/mmkv.default* /.config/stetic/library-cache/ /.config/xbuild/pkgconfig-cache-2.xml # opencode — only opencode.jsonc is hand-crafted; everything else is auto-generated /.config/opencode/.gitignore /.config/opencode/bun.lock /.config/opencode/node_modules/ /.config/opencode/package-lock.json /.config/opencode/package.json # omlx - only settings.json is hand-crafted; everything else is auto-generated /.omlx/* # Zed — prompts db (data.mdb) is tracked; lock and derived files are not /.config/zed/.tmp* /.config/zed/conversations/ /.config/zed/embeddings/ /.config/zed/prompts/**/lock.mdb /.config/zed/settings_backup.json /.config/zed/themes/ /.config/homebrew/trust.json /.config/zsh/ # ══════════════════════════════════════════════════════════════════════════════ # SSH — keys and configs are tracked; agent sockets are not # ══════════════════════════════════════════════════════════════════════════════ /.ssh/agent/ # ══════════════════════════════════════════════════════════════════════════════ # HOME DIRECTORY TOP-LEVEL FOLDERS — intentionally excluded from backup # ══════════════════════════════════════════════════════════════════════════════ /_install*/ /Applications/ /Applications\ (Parallels)/ /bin/ /Box\ Documents/ /Box\ Sync/ /Brewfile.lock.json /Desktop/ # PROJECTS_BASE_DIR — update if you changed this from ~/dev in .shellrc /dev/ /Documents/ /Downloads/ /go/pkg/ /Google\ Drive/ /Google\ Drive\ File\ Stream/ /Library/ /mbox /mechvibes_custom/ /Movies/ /Music/ /OWASP-Dependency-Check/data /Parallels/ /personal/*/browser-profiles/ /Pictures/ /Public/ /QuickStart/ /share/ /Sites/ /swap-pane /trivy/ /Virtual\ Machines*/ /VirtualBox*/ /*.key # ══════════════════════════════════════════════════════════════════════════════ # DEV WORKSPACE — nested repos are skipped by git; loose junk in the tree # NOTE: These entries mirror PROJECTS_BASE_DIR (~/dev). Update all /dev/**/ lines # below if you changed PROJECTS_BASE_DIR from ~/dev in .shellrc. # ══════════════════════════════════════════════════════════════════════════════ /dev/**/.DS_Store /dev/**/.nvmrc /dev/**/.pytest_cache /dev/**/.tool-versions /dev/**/*.zwc **/Skype/**/media_messaging/ # ══════════════════════════════════════════════════════════════════════════════ # MISC APP DATA — not portable across machines # ══════════════════════════════════════════════════════════════════════════════ /.codeql/ /.codetogether/ /.dropbox*/ /.dvdcss/ # ══════════════════════════════════════════════════════════════════════════════ # FILES SYMLINKED FROM THE DOTFILES REPO — tracked there, not here # ══════════════════════════════════════════════════════════════════════════════ /.angular-config.json /.ansible.cfg /.bash_profile /.bashrc /.config/bat/config /.config/bat/syntaxes/zsh_plugins.sublime-syntax /.config/btop/btop.conf /.config/curlrc /.config/direnv/direnv.toml /.config/ghostty/config /.config/git/hooks/* /.config/iex/iex.exs /.config/kdiff3/kdiff3rc /.config/mise/config.toml /.config/mise/default-gems /.config/pg/psqlrc /.config/pry/pryrc /.config/readline/inputrc /.config/reek/config.yml /.config/ripgrep/config /.config/rubocop/config.yml /.config/shellcheck/shellcheckrc /.config/starship.toml /.config/vim/autoload/plug.vim /.config/vim/vimrc /.config/zed/keymap.json /.config/zed/settings.json /.config/zsh-patina/config.toml /.config/zsh-patina/themes/fsh-default.toml /.config/zsh/.aliases /.config/zsh/.zlogin /.config/zsh/.zshrc /.config/zsh/cc /.config/zsh/count /.config/zsh/plugins.txt /.config/zsh/pull /.config/zsh/push /.config/zsh/st /.config/zsh/status_all_repos /.config/zsh/update_all_repos /.config/zsh/upreb /.config/zsh/*.zwc /.config/zsh/plugins.zsh /.config/zsh/.zsh_history /.default-gems /.editorconfig /.erdconfig /.eslintrc.js /.gemrc /.gitattributes /.config/git/config /.config/git/config-delta.inc /.config/git/config-pandoc.inc /.config/git/config-plist.inc /.config/git/config-sqlite3.inc /.gitignore /.gitignore_global /.irbrc /.jshintrc /.mailrc /.npmrc /.ollama/env /.profile /.railsrc /.rspec /.rufo /.rvmrc /.shellrc /.sqliterc /.ssh/global_config /.terraformrc /.zshenv /Brewfile # ══════════════════════════════════════════════════════════════════════════════ # NEGATIONS — must come last; git processes rules top-to-bottom # ══════════════════════════════════════════════════════════════════════════════ # Do NOT ignore the following files/directories !/.bundle/config !/.omlx/settings.json