# dotfiles **Repository Path**: adadaadadade/dotfiles ## Basic Information - **Project Name**: dotfiles - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-27 - **Last Updated**: 2026-10-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Dotfiles Symlink-based dotfiles management via a single script `dotfiles.sh` (an identical copy lives in each of this repo and private_dotfiles; sync manually after editing). ## Usage ``` bash # Idempotently sync src/ entries into ~ (linked entries skipped, missing ones # linked, conflicts confirmed one by one, directory conflicts offer merge/replace) ./dotfiles.sh sync # Show link state of each entry, stale links and backup inventory ./dotfiles.sh status # Copy the latest timestamped backup back (removes symlinks, restores real files) ./dotfiles.sh restore ./dotfiles.sh restore [dest_dir] # explicit backup; legacy flat # backups must be given explicitly ``` Options: `-y` take the default answer for every prompt; `--no-color` / `NO_COLOR`; `--color={auto|always|never}`. ## Entry source - No `items.sh` in the repo root (this repo): all top-level entries of `src/` are enumerated automatically. - With `items.sh` (private_dotfiles): its `items` array is used; entries support wildcards (e.g. `.ssh/*`, `.config/*`) expanded relative to `src/`. ## Conflict handling (sync) | Destination state | Behavior | |---|---| | Symlink already pointing into this repo | Skip | | Missing | Link directly (parent dirs created for nested entries) | | Real file | After confirmation move to `backup//`, then link | | Real directory | **Merge** (default): the original dir goes to backup as a whole, machine-only top-level entries are copied into repo src (repo version wins), then link; or **Replace**: move to backup and link | | Symlink pointing elsewhere | After confirmation replace | | Stale link into this repo (target deleted, incl. leftovers outside the entry list) | List and delete after confirmation | Backups carry a `.manifest`; `restore` uses it to restore entries by exact path. Old flat `backup/` layouts still work via an explicit path. ## Note Nested entries in private_dotfiles (e.g. `.config/io.datasette.llm`) link through this repo's whole-dir symlink on `~/.config`, so they are physically created inside `src/.config/` and excluded via the matching `.gitignore` entry. All script output is ASCII-only English so it renders on any TTY.