<feed xmlns='http://www.w3.org/2005/Atom'>
<title>archsetup/README.md, branch main</title>
<subtitle>Builds a full dev workstation from a bare Arch Linux install.
</subtitle>
<id>https://git.cjennings.net/archsetup/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/archsetup/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/'/>
<updated>2026-06-02T17:16:38+00:00</updated>
<entry>
<title>refactor: drop in-repo dotfiles/, move stow tooling to the dotfiles repo</title>
<updated>2026-06-02T17:16:38+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-02T17:16:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=b10cba594db836c0747066addad48bda4d30cd02'/>
<id>urn:sha1:b10cba594db836c0747066addad48bda4d30cd02</id>
<content type='text'>
Since the installer clones DOTFILES_REPO into ~/.dotfiles and stows from there, the in-repo dotfiles/ tree was dead weight. Nothing reads it at install time. I removed it (831 files) now that both machines are migrated.

The Makefile's stow / restow / reset / unstow / import targets and the dotfile-script unit suites moved to the dotfiles repo. They sit alongside the scripts they manage and run standalone (cd ~/.dotfiles &amp;&amp; make ...). This Makefile keeps the VM-integration targets and the installer-helper suite (safe-rm-rf).

I updated CLAUDE.md and README.md so stow operations run from ~/.dotfiles, and the dotfile-management, theme, and unit-test sections point at the standalone repo. The README was already describing the old in-repo model from before the installer switched to cloning. This brings it in line.
</content>
</entry>
<entry>
<title>docs: document the unit-test layer and add a make test-unit target</title>
<updated>2026-05-20T17:02:47+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-20T17:02:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=2172c904e34e044ba938d5a4948182d9fd878816'/>
<id>urn:sha1:2172c904e34e044ba938d5a4948182d9fd878816</id>
<content type='text'>
The README only covered the VM integration harness. The unit suites under tests/ (one directory per script, fake binaries on PATH) went unmentioned, so a contributor adding a .local/bin script had no way to know they existed or how to run them.

I added a make test-unit target that runs every tests/*/test_*.py suite explicitly. unittest discover can't find them because the per-script directory names are hyphenated and aren't valid package paths. Then I split the README Testing section into Unit and VM-integration layers, added a guide for adding a suite, and pointed Contributing at test-unit for script changes.
</content>
</entry>
<entry>
<title>refactor(scripts/post-install): consolidate gitrepos.sh and harden the script</title>
<updated>2026-05-17T19:08:18+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-17T19:08:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=dae765970268dcbea96060de63cae06c3e63bea6'/>
<id>urn:sha1:dae765970268dcbea96060de63cae06c3e63bea6</id>
<content type='text'>
gitrepos.sh did the same `~/.dotfiles` / `~/.emacs.d` remote swap that
post-install.sh already had, plus a `git pull --set-upstream origin main`
follow-on that post-install was missing. I folded the pull into the
post-install remote-rewrite block and dropped gitrepos.sh.

While in the file, I also:

- Quoted every variable (`"$logfile"`, `"$HOME"` paths, `"$(whoami)"`).
- Sent the remote-rewrite block to the log file like the other blocks
  do (was leaking to stdout).
- Made the remote-rewrite idempotent. A re-run used to break the
  `cd &amp;&amp; remote remove &amp;&amp; remote add` chain because remove fails when
  origin is already the desired URL. The loop now uses
  `git -C "$dir" remote set-url` when origin exists and `remote add`
  when it does not.
- Pre-created `~/sync`, `~/pictures`, `~/code`, `~/projects` so the
  clones don't fail on missing parent dirs.
- Wrapped each `git clone` in a `clone_if_missing` helper so a re-run
  skips destinations that already exist instead of erroring out.

README.md picks up the gitrepos.sh removal in the forking note.
</content>
</entry>
<entry>
<title>docs: add GPL-3.0 LICENSE and initial README</title>
<updated>2026-05-11T18:45:12+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-11T18:45:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=028f144801fa37390a04b2ccd8188225decbfe33'/>
<id>urn:sha1:028f144801fa37390a04b2ccd8188225decbfe33</id>
<content type='text'>
Initial README. Personal values (emails, URLs, repo names, the temporary root password) are placeholders for the eventual public release. LICENSE is the canonical GPL-3.0 license text.
</content>
</entry>
</feed>
