Skip to content

Add portable package bootstrap and application dotfiles - #22

Merged
mark-groves merged 7 commits into
mainfrom
agent/portable-package-bootstrap
Jul 14, 2026
Merged

mark-groves merged 7 commits into
mainfrom
agent/portable-package-bootstrap

Conversation

@mark-groves

@mark-groves mark-groves commented Jul 13, 2026

Copy link
Copy Markdown
Owner

Summary

  • add a provider-neutral package profile with a Fedora mapping and idempotent DNF adapter
  • add one bootstrap entry point for package installation and explicit GNU Stow deployment
  • add portable Ghostty, LazyVim, shell, tmux, Git, and Starship configuration
  • keep repository setup separate from full Fedora workstation provisioning

Why

This repository should install the applications and command-line tools used regularly and configure them with portable dotfiles. System repositories, drivers, desktop policy, and workstation tuning are deliberately out of scope and will live in a separate Fedora setup repository.

The package profile uses stable logical identifiers. Concrete Fedora names remain under ansible/packages/providers/, while provider behavior is isolated behind a small detect / plan / install adapter interface so another package provider can be added without changing the dotfiles.

Validation

  • ./scripts/check.sh
  • Fedora provider detection, package listing, and dry-run against installed RPM state
  • fresh temporary-home Stow deployment followed by a second idempotency run
  • obsolete Git and Ghostty symlink migration in a temporary home
  • full bootstrap dry-run
  • Ghostty configuration validation
  • Neovim headless startup
  • tmux configuration startup
  • invalid provider and conflicting-option negative tests
  • secret-pattern scan and git diff --check

Note

Medium Risk
Changes Git signing and credential helper paths (workflow impact) and runs elevated DNF installs during bootstrap; scope is large but limited to personal dev machines, not deployed services.

Overview
Introduces a single bootstrap path (bootstrap.sh) that installs a provider-neutral CLI package profile and deploys dotfiles, with --dry-run, --packages-only, and --dotfiles-only splits.

Package layer: ansible/packages/profile.txt plus Fedora mapping and scripts/install-packages.sh with a detect / plan / install adapter (fedora.sh uses rpm -q and sudo dnf only for missing RPMs). OS-specific names stay under ansible/; behavior stays in scripts/.

Stow layer: Default packages come from stow-packages.txt instead of auto-discovering top-level dirs. stow.sh gains list, optional package subsets, obsolete symlink cleanup, and stricter non-root checks. scripts/check.sh validates manifests, shell syntax, and a Stow dry-run.

New/updated config: Ghostty, LazyVim (lazy-lock.json + language extras), additive Bash fragments (PATH, direnv, Starship), tmux defaults, and Git changes—unsigned commits by default (git cis for signed), Git LFS filters, and ~/.local/bin wrappers for gh credentials and 1Password SSH signing.

Docs and AGENTS.md refocus the repo on portable apps/dotfiles and defer full Fedora workstation provisioning elsewhere.

Reviewed by Cursor Bugbot for commit fac2b6b. Configure here.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit fac2b6b. Configure here.

Comment thread shell/.bashrc.d/10-path.sh
Comment thread scripts/stow.sh Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fac2b6b510

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread git/.config/git/config Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ee01e8d366

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread git/.config/git/config Outdated
Comment thread scripts/stow.sh Outdated
Comment thread scripts/stow.sh Outdated
Comment thread scripts/stow.sh Outdated
Comment thread nvim/.config/nvim/lua/config/lazy.lua
Comment thread scripts/check.sh Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 555b83da90

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread scripts/stow.sh Outdated
Comment thread ansible/packages/profile.txt

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: defadf3bf8

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread git/.config/git/config Outdated
Comment thread scripts/stow.sh Outdated
Comment thread ansible/package-providers/fedora.sh
Comment thread scripts/check.sh Outdated
Comment thread git/.config/git/config Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2a8f9779c7

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread scripts/stow.sh Outdated
Comment thread nvim/.config/nvim/lua/config/lazy.lua
Comment thread nvim/.config/nvim/lua/config/lazy.lua

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2bacfb26ad

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread nvim/.config/nvim/lua/config/lazy.lua
Comment thread scripts/stow.sh Outdated
@mark-groves
mark-groves merged commit 3e94b4b into main Jul 14, 2026
2 checks passed
@mark-groves
mark-groves deleted the agent/portable-package-bootstrap branch July 14, 2026 01:22
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.

1 participant