Arch Linux dotfiles and system configuration snapshots, split by machine.
master is intentionally just the repository index/bootstrap area. Real
configs live on host-specific branches, because display layouts, firmware
tools, device rules, and /etc snapshots are not portable enough to mix safely.
master- repo map and bootstrap scripts; no machine config.msi-delta-15- current MSI Delta 15 A5EFK config.dell-precision-5510- old Dell Precision 5510 config/archive branch.
Avoid merging host branches wholesale. Cherry-pick shared improvements when a script or config change is actually portable.
home/- files adopted from$HOME; live files in$HOMEare symlinks back into this directory.system/etc/- selected/etcsnapshots. These are never restored automatically because they need root-level review.packages/- explicit native/AUR package lists for rebuilding the machine.system/*.txt- enabled systemd unit snapshots.audit/- notes about hardcoded paths, hardware-specific settings, skipped secrets, and other portability risks.scripts/snapshot-home.sh- first-time adoption of selected$HOMEpaths intohome/, replacing the live files with symlinks back to the repo.scripts/link-home.sh- recreates user-level symlinks.scripts/snapshot-system.sh- refreshes package lists and selected system snapshots.
Start from master, create the machine branch, then adopt the current machine's
home config and system snapshots:
git switch master
git switch -c dell-precision-5510
./scripts/snapshot-home.sh
./scripts/snapshot-system.sh
git status --short --ignoredsnapshot-home.sh moves only the allowlisted paths from $HOME into home/,
replaces them with relative symlinks, and adds .gitkeep files to empty
directories so Git preserves them. snapshot-system.sh only snapshots selected
/etc files, package lists, and enabled systemd units; it does not collect
anything from $HOME.
Checkout the machine branch first:
git switch msi-delta-15
./scripts/link-home.shThe link script moves existing non-symlink files aside with a timestamped
.backup.* suffix before creating symlinks.
System files under system/etc/ are reference snapshots. Review diffs and copy
them manually with sudo only when they make sense for the target machine.
./scripts/snapshot-system.sh
git statusReview the diff before committing. Runtime state, histories, caches, app databases, and secrets should stay out of the repo.
- SSH private keys, GPG private keys, GitHub CLI auth files, Codex auth state.
- Browser, Electron, VS Code workspace/globalStorage/history, Discord, Claude, dconf, Pulse/WirePlumber state, Gradle caches, Go telemetry.
- Shell/editor histories and generated status files.
The .gitignore on host branches is intentionally conservative. If something
looks like state rather than config, leave it out.