<feed xmlns='http://www.w3.org/2005/Atom'>
<title>archsetup/scripts/package-inventory, 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-24T23:44:29+00:00</updated>
<entry>
<title>chore: open-source release-prep (udev flag, SPDX headers, boolean style)</title>
<updated>2026-06-24T23:44:29+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-24T23:44:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=934bbf398729b261ac4f75641a5900f4e2f42a7d'/>
<id>urn:sha1:934bbf398729b261ac4f75641a5900f4e2f42a7d</id>
<content type='text'>
Three release cleanups, all behavior-preserving for my machines:

- Gated the Logitech BRIO udev rule behind INSTALL_DEVICE_UDEV_RULES (default yes, opt-out), so the device-specific rule is off for anyone without that hardware. Added the config read, validation, and a conf.example entry.
- Added a GPL-3.0-or-later SPDX-License-Identifier header after the shebang of all 24 shell scripts in the repo.
- Standardized boolean conditionals on the explicit [ "$var" = "true" ] form, replacing the bare `if $var` idiom. The STEPS function-dispatch is left alone, since it runs a function name rather than testing a boolean.
</content>
</entry>
<entry>
<title>test(scripts): lock package-inventory behavior with characterization tests</title>
<updated>2026-06-15T03:32:23+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-15T03:32:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=b9ca8305f7314a82b4215379440724769515be32'/>
<id>urn:sha1:b9ca8305f7314a82b4215379440724769515be32</id>
<content type='text'>
package-inventory compares archsetup's declared packages against the live system but had no tests, so a future archsetup edit (a new for-loop shape, a renamed install helper) could silently break the extraction.

I added two env seams so the script is testable without the real system. PKGINV_ARCHSETUP points the extractor at a fixture installer, PKGINV_PACMAN swaps in a fake pacman serving controlled query output. Both default to the real targets, so normal use is unchanged, and the seams match the env-override pattern audit-packages.sh already uses.

The 7 tests pin the extraction (direct calls, for-loop lists, variable-arg skip) and both diff directions against the fixture, with no network or real pacman db. I also added a make package-diff target so the tool is reachable alongside the test targets.
</content>
</entry>
<entry>
<title>feat(archsetup): add package-inventory script and reconcile packages</title>
<updated>2026-02-07T07:05:50+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-07T07:05:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=387a58ad7d03087945103a4b47d4f47df4f8df23'/>
<id>urn:sha1:387a58ad7d03087945103a4b47d4f47df4f8df23</id>
<content type='text'>
Add package-inventory script that compares archsetup-declared packages
against the live system. Fix awk for-loop parser and dependency
filtering. Add 10 missing packages to archsetup (hyprpaper, wev, socat,
sshpass, flatpak, solaar, ttf-dejavu, atomicparsley, freetube,
tidal-dl-ng). Fix pipx_install function name bug. Change Hyprland
follow_mouse to 0 to fix swap focus issue.
</content>
</entry>
</feed>
