Skip to content

Build a reliable personal dotfiles setup - #5

Merged
m1ngsama merged 1 commit into
mainfrom
agent/reliable-dotfiles
Aug 11, 2026
Merged

Build a reliable personal dotfiles setup#5
m1ngsama merged 1 commit into
mainfrom
agent/reliable-dotfiles

Conversation

@m1ngsama

@m1ngsama m1ngsama commented Aug 11, 2026

Copy link
Copy Markdown
Owner

Overview

This update turns the repository from a machine-shaped configuration snapshot into a portable personal workstation source state. It keeps the keyboard-first workflow and Solarized Osaka identity while making installation, migration, recovery, dependency provisioning, terminal previews, and performance measurement predictable on macOS and Linux.

The repository remains a personal dotfiles project. This change does not introduce project versioning, releases, or a tagging workflow.

What changed

Configuration management

  • Move managed files under a chezmoi home/ source state with explicit macOS, Linux core, and Linux X11 boundaries.
  • Pin the supported chezmoi binary and verify downloaded archives with platform-specific SHA-256 values.
  • Add a preview-first bootstrap that refuses implicit writes and requires --apply before changing targets.
  • Back up existing files, symlinks, and directory modes before every apply.
  • Roll back apply, verification, signal interruption, and optional legacy cleanup as one transaction.
  • Add preview-first restore tooling with a separate authorization for removing paths first created by chezmoi.
  • Reject unsafe destination, backup, and symlink parent chains.
  • Detect the retired Fisher, z, fish-exa, and fish-ghq layout without deleting unrelated local Fish state.

Fish and terminal workflow

  • Remove committed universal variables, personal paths, and shell-startup side effects.
  • Replace generated Fisher snapshots with small owned integrations and a checksummed nvm.fish vendor snapshot.
  • Guard eza, zoxide, ghq, fzf, lazygit, lolcat, and thefuck so missing optional tools do not break startup.
  • Preserve Ctrl-G repository selection and the existing tmux Ctrl-T workflow.
  • Make Go, pnpm, XDG, GNU/BSD command, and macOS/Linux path handling portable.
  • Remove the tmux plugin-manager dependency and resolve adjacent fragments relative to the sourced config.
  • Consolidate prompt branch, detached-HEAD, and tracked dirty-state detection into one Git porcelain query.

Ranger previews

  • Add a minimal managed rc.conf without replacing ranger's built-in dt and dT bindings.
  • Keep the portable default in text-preview mode and use chafa for image, generated video, and generated PDF previews.
  • Leave graphical image protocols machine-local because renderer support depends on the active terminal.
  • Guard ImageMagick, ffmpegthumbnailer, Poppler, metadata, and font tools; missing optional commands fall back quietly to file classification.
  • Add a guarded uT restore shortcut while retaining ranger's confirmed-trash workflow.
  • Document the optional preview package surface and verify media success, missing-tool fallbacks, configuration parsing, and the deployed upstream checksum.

Neovim reliability

  • Lock the complete 50-plugin graph and bootstrap lazy.nvim plus LazyVim at exact commits.
  • Update Tree-sitter, LSP inlay hints, Markdown rendering, HSL conversion, and current Neovim 0.12 APIs.
  • Pin the Mason registry tag and verify package receipts, source identities, versions, LSP packages, and parsers.
  • Add a blocking scripts/setup-nvim provisioner for reproducible toolchain readiness.
  • Inspect installed plugin checkouts before loading the real config and preserve drifted trees in quarantine.
  • Prevent personal or system Git hooks, filters, attributes, templates, fsmonitor commands, and replacement refs from affecting cold clones or warm repairs.
  • Serialize provisioning, forward signals to the active child, and clean the setup lock on controlled exits.
  • Replace the unmaintained browser-based Markdown preview dependency with in-editor rendering.
  • Add an explicit benchmark mode that disables missing-plugin, Mason, and Tree-sitter provisioning in the copied measurement tree.
  • Rebase only source-internal absolute data symlinks inside the benchmark copy and continue rejecting links that escape the supplied data tree.

Linux rice and visual system

  • Keep i3/X11 as the explicit desktop profile and leave Wayland behavior separate.
  • Make X startup scripts portable and ensure Xresources, Xmodmap, wallpaper, and Picom behavior degrade safely.
  • Use a terminal fallback chain instead of a host-specific terminal path.
  • Define one reviewed Solarized Osaka palette for Alacritty, tmux, Fish, and i3.
  • Reserve red for urgent or failed states, add non-color failure markers, and retain visible 2 px focus borders.
  • Keep transparency on the Alacritty background rather than fading text or complete windows.
  • Add an original SVG palette preview and record upstream revisions, checksums, modifications, and licenses.

Performance and CI efficiency

  • Add scripts/benchmark with 100-sample Fish and prompt measurements, explicit warm-ups, environment metadata, and opt-in warm Neovim measurement.
  • Measure exactly one fish_prompt call per sample and reject incomplete timing output.
  • Add a generated clean repository with 100 directories and 5,000 tracked files as the representative large-worktree scenario.
  • Use temporary HOME/XDG state and sanitized Git settings while reporting active host Fish integrations instead of presenting them as isolated inputs.
  • Keep absolute latency thresholds off GitHub-hosted runners; local fixed-hardware results remain observational.
  • Keep pull requests on the offline macOS/Linux path, reserve network provisioning for main or manual runs, and run the full cold Neovim graph only on Linux.
  • Put the five-minute bound on the pull-request check step rather than dependency installation, retain a wider job ceiling for infrastructure variance, and cancel superseded runs.
  • Seed the Linux X11 profile prompt during chezmoi initialization and make interactive-cancel timeouts terminate the complete PTY process group.
  • Update the pinned checkout action to v6.0.2.

Repository quality and onboarding

  • Add one local check entry point shared with GitHub Actions on macOS and Linux.
  • Cover syntax, formatting, ShellCheck, lock consistency, theme contrast, provenance, migration, restore, signals, path safety, prompt behavior, benchmark smoke, ranger fallbacks, and clean-home integration.
  • Add Dependabot configuration, repository text rules, ignores, and executable-mode checks.
  • Rewrite the README with a visual-first overview, support matrix, safe install path, keymap highlights, recovery instructions, platform requirements, Ranger tooling, performance workflow, and maintenance policy.
  • Keep implementation, comments, and commit text in English while retaining the project maxim as the single intentional non-English exception.

Migration impact

The old top-level application directories are replaced by the chezmoi source state. Existing user targets are not deleted simply because they are absent from the repository, and bootstrap does not apply anything during preview. Users migrating an older checkout can review the exact retired Fish paths and opt into their transactional cleanup with --clean-legacy.

The first recommended flow is:

./scripts/install-chezmoi
./scripts/bootstrap --chezmoi "$HOME/.local/bin/chezmoi"
./scripts/bootstrap --chezmoi "$HOME/.local/bin/chezmoi" --apply

Verification

  • Default local suite: 0 failures; only unavailable-tool and platform-specific checks are skipped.
  • Strict offline suite with the pinned chezmoi binary: 0 failures and 4 expected network/Linux-only skips.
  • Full clean-XDG Neovim canary: 50 locked plugins, unchanged lockfile, complete Mason receipts, and 0 failures.
  • Bootstrap apply, verify, idempotence, migration, restore, interactive cancel, signal rollback, and legacy-cleanup rollback all pass.
  • Ranger media success paths, absent-tool fallbacks, rc.conf parsing, and deployed provenance checksum pass.
  • Bash, Fish, Lua, JSON, TOML, YAML, ShellCheck, whitespace, provenance, executable-mode, personal-path, secret-pattern, and English-text checks pass.
  • Clean commit b113a7c on an Apple M4 running macOS 15.7.3, with five warm-ups and 100 samples, measured configured Fish startup at 19.690 ms p50, prompt rendering outside Git at 3.882 ms p99, a small Git repository at 4.902 ms p99, and the 5,000-file repository at 63.218 ms p99.
  • The large-repository result exceeded the provisional 50 ms investigation line. A focused comparison found the current single Git status query faster than equivalent multi-process branch and dirty-state alternatives, so no semantic regression was accepted for a cosmetic target.
  • Dedicated X230 and warm-Neovim baselines remain explicitly waived in [Performance] Low-end hardware performance contract #4 because the required reference hardware and a persistent pre-provisioned measurement tree are not available.

Closes #2.
Supersedes #3.
Implements the actionable repository work tracked in #4.

@m1ngsama
m1ngsama force-pushed the agent/reliable-dotfiles branch 3 times, most recently from c35ecb7 to b6e23c7 Compare August 11, 2026 08:06
@m1ngsama

Copy link
Copy Markdown
Owner Author

Validation update for b6e23c7: the bounded offline pull-request workflow passed on both platforms (macOS: 56 seconds; Ubuntu: 59 seconds). Startup latency remains a local fixed-hardware observation tracked in #4, not a GitHub-hosted timing gate.

@m1ngsama
m1ngsama force-pushed the agent/reliable-dotfiles branch from b6e23c7 to 8b01411 Compare August 11, 2026 09:05
Move the configuration into a chezmoi source state with preview-first bootstrap, transactional backup and restore, pinned dependencies, cross-platform checks, and a unified Solarized Osaka visual system.

Refresh the README with a visual-first overview, safe onboarding, keymap highlights, explicit maintenance guarantees, Ranger preview tooling, and a controlled local performance baseline.

Consolidate Fish prompt Git work, add a representative 5,000-file prompt fixture, and keep pull-request verification offline and bounded while preserving macOS and Linux behavior coverage.
@m1ngsama
m1ngsama force-pushed the agent/reliable-dotfiles branch from 8b01411 to b113a7c Compare August 11, 2026 09:11
@m1ngsama
m1ngsama merged commit 49831f6 into main Aug 11, 2026
2 checks passed
@m1ngsama
m1ngsama deleted the agent/reliable-dotfiles branch August 11, 2026 09:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Improve ranger previews and codify required tooling

1 participant