<feed xmlns='http://www.w3.org/2005/Atom'>
<title>archsetup/scripts, branch v0.5</title>
<subtitle>Builds a full dev workstation from a bare Arch Linux install.
</subtitle>
<id>https://git.cjennings.net/archsetup/atom?h=v0.5</id>
<link rel='self' href='https://git.cjennings.net/archsetup/atom?h=v0.5'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/'/>
<updated>2026-01-29T14:48:09+00:00</updated>
<entry>
<title>fix(test): use local repo for archsetup instead of remote</title>
<updated>2026-01-29T14:48:09+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-29T14:48:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=56da76f88fce6f23e4e9822ea52de5bab6046db1'/>
<id>urn:sha1:56da76f88fce6f23e4e9822ea52de5bab6046db1</id>
<content type='text'>
Set ARCHSETUP_REPO=/tmp/archsetup-test in VM config so archsetup
uses the bundled test repo instead of cloning from remote server.
This ensures tests use the current local changes.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix(test): use PROJECT_ROOT for git bundle creation</title>
<updated>2026-01-29T14:15:14+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-29T14:15:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=5013346e23c257c5f2a587b21b431f63b64da70b'/>
<id>urn:sha1:5013346e23c257c5f2a587b21b431f63b64da70b</id>
<content type='text'>
The git bundle command was running from current directory
instead of PROJECT_ROOT, causing it to bundle from wrong repo.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(test,hyprland): improve test infrastructure and fix easyeffects</title>
<updated>2026-01-29T12:53:36+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-29T12:53:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=f742d41837756743629a4a7bf2f1932e919f77a8'/>
<id>urn:sha1:f742d41837756743629a4a7bf2f1932e919f77a8</id>
<content type='text'>
Test Infrastructure:
- Add make test-keep target to keep VM running after test
- Add make test-vm-base target for creating base VM only
- Update make test to auto-create VM if missing
- Remove manual user creation from create-base-vm.sh (archsetup handles it)
- Remove unused USERNAME/USER_PASSWORD from archsetup-test.conf

Archsetup:
- Add snapper-gui-git for btrfs snapshot GUI
- Add SYNC_ACL=yes for snapper permissions
- Add setfacl for wheel group access to /.snapshots

Hyprland:
- Remove easyeffects scratchpad (keep auto-launch)
- Remove ecosystem permissions (caused too many popups)

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(testing): add make test target and display report on completion</title>
<updated>2026-01-28T04:22:34+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-28T04:22:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=cd0984fda412ae979379f45200a2aec52425d769'/>
<id>urn:sha1:cd0984fda412ae979379f45200a2aec52425d769</id>
<content type='text'>
Add 'make test' Makefile target to run full VM integration test suite.
Print test report to terminal after generation for immediate visibility.
</content>
</entry>
<entry>
<title>feat(testing): rewrite test infrastructure from libvirt to direct QEMU</title>
<updated>2026-01-27T23:22:55+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-27T23:22:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=6398b8525a422332b361e0811f03bfa2a49dcff7'/>
<id>urn:sha1:6398b8525a422332b361e0811f03bfa2a49dcff7</id>
<content type='text'>
Replace the never-fully-operational libvirt-based VM test infrastructure
with direct QEMU management and archangel ISO for fully automated,
unattended base VM creation.

Key changes:
- vm-utils.sh: complete rewrite — QEMU process mgmt via PID file,
  monitor socket for graceful shutdown, qemu-img snapshots, SSH
  port forwarding (localhost:2222)
- create-base-vm.sh: boots archangel ISO, SSHs in, runs unattended
  install via config file, verifies, creates clean-install snapshot
- run-test.sh: snapshot revert, git bundle transfer, detached archsetup
  execution with setsid, polling, validation, and report generation
- debug-vm.sh: CoW overlay disk, GTK display, auto-cleanup on close
- setup-testing-env.sh: reduced deps to qemu-full/sshpass/edk2-ovmf/socat
- cleanup-tests.sh: PID-based process management, orphan detection
- validation.sh: port-based SSH (backward compatible), fuzzel/foot for
  Hyprland, corrected package list paths
- network-diagnostics.sh: getent/curl instead of nslookup/ping (SLIRP)

New files:
- archsetup-test.conf: archangel config for base VM (btrfs, no encrypt)
- archsetup-vm.conf: archsetup config for unattended test execution
- assets/archangel.conf.example: reference archangel config

Deleted:
- finalize-base-vm.sh: merged into create-base-vm.sh
- archinstall-config.json: replaced by archangel .conf format

Tested: full end-to-end run — 51 validations passed, 0 failures.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>chore: move arch-distrobox and wipedisk to scripts</title>
<updated>2026-01-27T12:21:28+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-27T12:21:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=61c8fc023e5d69f1c38df1691d4f58c92410b88a'/>
<id>urn:sha1:61c8fc023e5d69f1c38df1691d4f58c92410b88a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix(scripts): update wireguard config path after rename</title>
<updated>2026-01-27T12:17:43+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-27T12:17:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=d157bdaeac83647cd1a7f17e48e2736907d56e7c'/>
<id>urn:sha1:d157bdaeac83647cd1a7f17e48e2736907d56e7c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>refactor(dotfiles): rename system/ to common/ and remove unused configs</title>
<updated>2026-01-26T23:36:38+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-26T23:36:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=cd8d0be8d8759f31bc931a76ab737a621a14116e'/>
<id>urn:sha1:cd8d0be8d8759f31bc931a76ab737a621a14116e</id>
<content type='text'>
Rename dotfiles/system to dotfiles/common for clarity - indicates
shared dotfiles used across all desktop environments (DWM, Hyprland).

Removed config directories for uninstalled applications:
- ghostty (using different terminal)
- lf (using ranger instead)
- mopidy (using mpd instead)
- nitrogen (X11-only, obsolete for Wayland)
- pychess (not installed)
- JetBrains (not installed via archsetup)
- youtube-dl (using yt-dlp with different config location)

Kept audacious config for potential future use.

Updated all references in archsetup, CLAUDE.md, todo.org, and
validation.sh.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix(testing): remove obsolete --skip-slow-packages option</title>
<updated>2026-01-25T00:52:34+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-25T00:52:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=6b76c602a1df6c18098fa6b9a43db3a64f2d5ce2'/>
<id>urn:sha1:6b76c602a1df6c18098fa6b9a43db3a64f2d5ce2</id>
<content type='text'>
This flag was removed from archsetup but remained in test scripts.
</content>
</entry>
</feed>
