<feed xmlns='http://www.w3.org/2005/Atom'>
<title>archsetup/assets, 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-28T12:19:58+00:00</updated>
<entry>
<title>feat(hyprland): add easyeffects EQ presets and autostart</title>
<updated>2026-01-28T12:19:58+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-28T12:19:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=d4d997653574b5a00c01f02a3fb45001cd86c2f4'/>
<id>urn:sha1:d4d997653574b5a00c01f02a3fb45001cd86c2f4</id>
<content type='text'>
- Add Harman EQ presets for DT770, PXC 550-II, and Pixel Buds Pro 2
- Start easyeffects minimized on Hyprland startup
- Move preset docs and install script to assets/
</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=70bb2d5ab1bf6787bc613e33f5398be2eca1f5fd'/>
<id>urn:sha1:70bb2d5ab1bf6787bc613e33f5398be2eca1f5fd</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 spec.org to assets</title>
<updated>2026-01-27T12:20:48+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-27T12:20:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=2923dba9ebc81b0691398ae54eb3afdc1d1844fe'/>
<id>urn:sha1:2923dba9ebc81b0691398ae54eb3afdc1d1844fe</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(assets): add dupre color theme reference and palette generator</title>
<updated>2026-01-27T12:17:38+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-27T12:17:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=de0594dacfcacdd576537c2ce0a3a3c4a11b61b5'/>
<id>urn:sha1:de0594dacfcacdd576537c2ce0a3a3c4a11b61b5</id>
<content type='text'>
Add color-themes/ with dupre palette org doc, PNG swatch image, and
ImageMagick generation script. Move old docs to outbox.
</content>
</entry>
<entry>
<title>chore(assets): reorganize into outbox and wireguard-config</title>
<updated>2026-01-27T12:17:29+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-27T12:17:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=aa89a46820f0a27df88a3717c987ac31cbb2f940'/>
<id>urn:sha1:aa89a46820f0a27df88a3717c987ac31cbb2f940</id>
<content type='text'>
Move processed inbox files to assets/outbox/, rename assets/wireguard
to assets/wireguard-config, delete unused dwm.desktop.
</content>
</entry>
<entry>
<title>fix(archsetup): bug fixes, locale support, and code improvements</title>
<updated>2026-01-24T19:21:01+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-24T19:21:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=6011f90328d88a2c449442d6a31fef3614926ec9'/>
<id>urn:sha1:6011f90328d88a2c449442d6a31fef3614926ec9</id>
<content type='text'>
Bug fixes:
- Initialize errors_encountered at script start (not in intro)
- Capture correct exit code in retry_install loop
- Add missing error_fatal parameters
- Fix unclosed quote in error message
- Quote variables in pacman_install/aur_install commands
- Standardize done statements (remove trailing semicolons)

New features:
- Locale selection prompt with 8 common options + custom entry
- Auto-derive wireless region from locale
- Extract zfs-replicate to separate script file
- Make archsetup repo URL configurable
- Add MulticastDNS=no to avoid avahi conflict

Code improvements:
- Single STEPS array for show_status and main execution loop
- Document security note for config file sourcing
- Add explanatory comment for UFW VM behavior
- Silence update-desktop-database warnings

Config updates:
- Add LOCALE and ARCHSETUP_REPO to example config

Also adds Wayland/Hyprland desktop alternative to V2MOM roadmap.
</content>
</entry>
<entry>
<title>chore: add stignore and reference docs</title>
<updated>2026-01-23T14:23:20+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-23T14:23:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=be066310d83a076c97ac013f6a3d7ea7d7c3bf06'/>
<id>urn:sha1:be066310d83a076c97ac013f6a3d7ea7d7c3bf06</id>
<content type='text'>
- .stignore for syncthing
- Reference notes for ZFS scripts removal and console display issues
</content>
</entry>
<entry>
<title>fix(archsetup): increase GRUB timeout and switch syncthing to user service</title>
<updated>2026-01-21T19:30:47+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-21T19:30:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=c16e5f9c3a92df53aa759df660f4af1199205f2a'/>
<id>urn:sha1:c16e5f9c3a92df53aa759df660f4af1199205f2a</id>
<content type='text'>
- GRUB_TIMEOUT 0→2 seconds for menu access
- Syncthing: system service → user service with lingering to prevent lock conflicts
- Update airplanemodetoggle for user service
- Update validation to check lingering instead of system service
</content>
</entry>
<entry>
<title>feat(archsetup): add fail2ban for SSH brute force protection</title>
<updated>2026-01-18T05:55:54+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-18T05:55:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=8a2076e1e5909f1241ccfd8906469e179fab25d6'/>
<id>urn:sha1:8a2076e1e5909f1241ccfd8906469e179fab25d6</id>
<content type='text'>
- Install and configure fail2ban with ufw integration
- SSH jail: 3 attempts, 1 hour ban
- Default jail: 5 attempts, 10 minute ban
- Also file security recommendations to assets/
</content>
</entry>
<entry>
<title>feat(archsetup): ZFS/sanoid support, gvfs-smb, bug fixes</title>
<updated>2026-01-17T23:55:20+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-17T23:55:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=e13933a47ed9814927f46d24ef58c969f2e4d0ac'/>
<id>urn:sha1:e13933a47ed9814927f46d24ef58c969f2e4d0ac</id>
<content type='text'>
- Add ZFS detection with sanoid/syncoid for snapshot management
- Add gvfs-smb for Thunar SMB network browsing
- Fix shell quoting throughout script
- Fix stale $action variables in error handlers
- Fix display() return values (was returning 1)
- Fix mkinitcpio.conf sed pattern to be flexible
- Fix vconsole.conf duplicate entries on re-run
- Fix systemd unit overrides using drop-in files
- Fix ufw port typo (55353 -&gt; 5353)
- Fix GRUB_RECORDFAIL_TIMEOUT undefined variable
- Enable NetworkManager service
- Move thunar, libvips, isync to pacman (now in official repos)
- Clean up reflector config with heredoc
- Remove unnecessary sudo when already root
- Convert shebang from sh to bash
</content>
</entry>
</feed>
