Commit Graph
87 Commits
Author SHA1 Message Date
alvinlollo 7c601ca53d ci: log HTTP status and response body on ISO upload failure
Tests / tests (push) Failing after 2m30s
`curl -f` swallowed Gitea's error response, so the 3-attempt upload
failure on the 6330 MiB ISO reported nothing diagnosable. Capture the
status code via -w, print up to 2 KB of the response body for both
HTTP-level and transport-level failures, and clear upload.json at the
start of each attempt so a stale body cannot be misreported.
2026-09-27 18:33:04 +10:00
alvinlollo f3bd10cf0f fix(iso): sweep ii-builder leftovers via NSpid before userdel
Tests / tests (push) Successful in 2m19s
end-4's ./setup sudo keepalive orphans a `sleep 60` child as ii-builder;
userdel then exits 8 and aborts the ISO build (CI exit 8).

Sweep uid-matching processes inside the build chroot before userdel,
mirroring shadow's user_busy_processes() checks (real/effective/saved
uid + root device/inode). Because arch-chroot mounts proc before
`unshare --fork --pid`, /proc entry numbers are outer-namespace pids:
signal the last NSpid field instead, require matching NSpid depth, and
surface kill errors instead of swallowing them. userdel keeps its stderr
and, on final failure, dumps the leftover process list before aborting.
2026-09-27 14:03:47 +10:00
alvinlollo 83ed87f6a9 feat(iso): build end-4 deps in-image, ship end4-pC as default shell
Tests / tests (push) Successful in 2m35s
- customize_airootfs.sh stages dots-hyprland at /opt, runs ./setup
  install-deps as a throwaway builder, harvests the built packages into
  /opt/localrepo so pacstrap resolves them offline
- image ships its own [local-aur] (file:///opt/localrepo); CI and
  localrepo/update.sh keep that copy in sync; .gitignore covers work/,
  out/ and airootfs/opt/localrepo/
- alvin-install runs ./setup install --skip-alldeps on the target
- clone pctrade/end4-pC into /etc/skel/.config/quickshell, patch qsConfig
  ii -> end4-pC in the staged variables.lua (guarded + idempotent), and
  restore the fork after setup rsync --delete's ~/.config/quickshell
- ship user presets in skel, point fish `q` alias at end4-pC
- AGENTS.md: document the fourth package source and new gotchas
2026-09-27 10:31:49 +10:00
alvinlollo 5ffd5d0d82 ci: pin SOURCE_DATE_EPOCH, assert ISO uuid metadata, verify uploads
Tests / tests (push) Canceled after 1m42s
- Export SOURCE_DATE_EPOCH before mkarchiso so label, volume UUID,
  file mtimes and ext4 hash seed trace to one timestamp.
- Post-build step: assert blkid UUID of the ISO matches every
  /boot/<uuid>.uuid stem and archisosearchuuid= reference inside
  shipped boot configs, and that no %ARCHISO% placeholder remains.
- After upload: re-hash local ISOs, size-check API assets, download
  each back from the internal origin (bypasses traefik/Anubis) with
  percent-encoded filenames (iso_name contains a space), compare
  SHA-256. Definitive corruption (missing/size/sha mismatch) deletes
  the release; transport/API errors fail without deleting.
2026-09-23 22:32:08 +10:00
alvinlollo 8484bddcf2 fix(installer): parse pkglist name field, skip unresolvable pkgs, keymap confirm
pacstrap failed at line 382 because pkglist lines from pacman -Q are
'name version' and were passed whole as pacman targets (~400 'target
not found'). Parse only the first field, pre-filter against pacman -Slq
so packages missing from the live repos (local-aur) are skipped with a
warning, and fall back to an unfiltered list if pacman -Syy fails.
Keymap screen now offers a US-layout confirm before the gum filter.
2026-09-23 22:32:01 +10:00
alvinlollo 0755091721 ci: add 3-try retry loop and timeouts for ISO release upload
Tests / tests (push) Successful in 2m17s
2026-09-22 22:06:33 +10:00
alvinlollo c71168371d fix(ci): upload plain ISO directly, skip zstd compression
Tests / tests (push) Successful in 2m22s
Compression was 5.3 GiB -> 5.2 GiB (98.6%) — negligible savings for
the extra build time. Upload the .iso directly as a release asset.
2026-09-21 19:56:07 +10:00
alvinlollo 117b5e97aa Add alvin-install TUI installer, fix NetworkManager boot
Tests / tests (push) Successful in 2m23s
- New gum-based installer script (alvin-install) with LUKS encryption,
  nmtui networking, disk selector, user/git config, and CachyOS repo setup
- Replace NetworkManager full unit file with symlink for consistency
- Add alvin-install reference to MOTD
- Add file_permissions entry in profiledef.sh
- Fix localrepo path case in pacman.conf
2026-09-20 22:22:20 +10:00
alvinlollo 8a88921913 fix: use linux-cachyos kernel in all boot entries
Tests / tests (push) Successful in 2m16s
Boot configs referenced stock vmlinuz-linux/initramfs-linux.img but
only linux-cachyos is installed. This caused boot to fall through
to memtest86+ since the kernel file was not found.
2026-09-20 17:02:20 +10:00
alvinlollo 9614192416 fix(ci): replace git LFS with release asset uploads
Tests / tests (push) Successful in 2m34s
The GITEA_TOKEN lacks 'lfs' scope, causing the LFS batch API to reject
uploads. Upload .zst files directly as release assets via the Gitea API
instead. This eliminates git-lfs, the separate releases repo, and all
LFS-related plumbing.
2026-09-20 13:24:37 +10:00
alvinlollo 2f1ac8d052 fix(ci): remove stderr suppression on push to diagnose LFS upload failure
Tests / tests (push) Successful in 2m21s
2026-09-20 10:24:51 +10:00
alvinlollo fa7eff8517 fix(ci): skip LFS smudge on releases repo clone
Tests / tests (push) Successful in 2m17s
2026-09-19 21:47:53 +10:00
alvinlollo 24f3f0f399 fix(ci): keep latest 2 releases instead of 3, clean up .releases-repo in always step
Tests / tests (push) Successful in 2m13s
2026-09-19 21:39:53 +10:00
alvinlollo ac59de33c8 fix(ci): move releases clone out of /tmp and free disk after LFS push
Tests / tests (push) Successful in 2m18s
2026-09-19 21:34:21 +10:00
alvinlollo da0855d341 Add --rm to remove source ISO
Tests / tests (push) Successful in 2m32s
2026-09-18 12:49:33 +10:00
alvinlollo 50d49bbe38 fix(ci): add PreTransaction hook to ensure /dev/stdin exists inside pacstrap chroot
Tests / tests (push) Successful in 2m31s
2026-09-17 15:58:16 +10:00
alvinlollo 1090e3c75b fix(ci): ensure /dev/stdin exists for mkinitcpio and remove stock linux kernel
Tests / tests (push) Successful in 2m18s
- Add CI step to create /dev/stdin symlinks before ISO build
  (Docker/container environments may lack these, causing mkinitcpio to fail)
- Remove stock linux kernel from packages.x86_64 (linux-cachyos is the
  intended kernel; dual-kernel causes boot confusion and doubles build time)

Closes #X
2026-09-17 09:42:29 +10:00
alvinlollo 48b760d54e Update cleanup step name to match always() behavior
Tests / tests (push) Successful in 2m15s
2026-09-17 07:30:20 +10:00
alvinlollo 7f91c189db Mirror releases and seed README in AlvinArch-releases for discovery
Tests / tests (push) Successful in 2m22s
Create a matching git tag + release in alvinlollo/AlvinArch-releases next to
the main repo release, seed a short README there pointing back to
AlvinArch (workflow status badges on top), and extend release pruning to
the releases repo so both stay capped at 3.
2026-09-16 22:44:05 +10:00
alvinlollo 3816877b12 Fix ISO release uploads >3GB: zstd-compress and store via Git LFS in AlvinArch-releases
Release assets can no longer be attached directly (Gitea 500 on multi-GB
uploads). Compress each ISO with zstd, push the .zst into
alvinlollo/AlvinArch-releases (releases/<tag>/ on main) via Git LFS, verify
the LFS object server-side by OID, and create the release with a download
link plus SHA-256 checksums instead of a binary attachment.
2026-09-16 22:41:35 +10:00
alvinlollo c9cf5ead97 Remove conflicting os-release, move branding to profiledef.sh
Tests / tests (push) Successful in 2m30s
2026-09-16 17:13:07 +10:00
alvinlollo 01c7c4e1fa Harden ISO build workflow: verifiable upload, cleanup on cancel/exit
Tests / tests (push) Successful in 2m21s
2026-09-16 16:37:25 +10:00
alvinlollo d5356b772e Fix custom branding
Tests / tests (push) Successful in 4m18s
2026-09-16 15:44:38 +10:00
alvinlollo 75bc4b3f4c Fix ISO upload: use internal Gitea URL to bypass traefik timeout, add curl retries and 30min timeout
Tests / tests (push) Successful in 2m26s
2026-09-15 22:53:24 +10:00
alvinlollo 10198915a1 Remove airootfs files that conflict with package installs
Tests / tests (push) Successful in 2m21s
These files exist in the airootfs overlay but are owned by packages
in packages.x86_64, causing 'exists in filesystem' errors during
mkarchiso pacman install:

- usr/lib/os-release (filesystem)
- usr/share/pacman/keyrings/cachyos-* (cachyos-keyring)
- etc/clamav/certs/clamav.crt (clamav)
- etc/skel/.zshrc (grml-zsh-config)
2026-09-15 18:49:59 +10:00
alvinlollo 56c02781c2 Fix CI: drop incorrect -c flag, fix word splitting in tests
Tests / tests (push) Successful in 2m15s
build-iso:
- Remove -c flag (it takes a pacman.conf path, not a clean flag)
- Use absolute paths for mkarchiso with -- separator
- Copy local-aur.files* alongside local-aur.db*

tests:
- Fix word splitting: use 'while IFS= read -r' instead of
  'for f in ' for shell and YAML file loops
- Fix YAML find filter to use -not -path like shell find
2026-09-15 18:36:45 +10:00
alvinlollo 8e6e06155c Fix mkarchiso argument parsing in CI
Tests / tests (push) Successful in 2m15s
Use -- to separate flags from profile path, preventing mkarchiso
from misinterpreting the -w argument as the profile directory.
Also make rm -rf fail-safe with || true.
2026-09-15 18:23:24 +10:00
alvinlollo 22bae5f19b Use absolute paths for mkarchiso in CI
Tests / tests (push) Successful in 2m16s
mkarchiso requires absolute paths. Clean work dir explicitly and
pass PWD-based paths to -w, -o, and the profile directory.
2026-09-15 18:17:53 +10:00
alvinlollo 2dbbb3321d Use mkarchiso -c flag to clean work directory before build
Tests / tests (push) Successful in 2m32s
Replaces the separate rm step with the built-in -c flag which
forces mkarchiso to clean previous working directories first.
2026-09-15 18:11:35 +10:00
alvinlollo c4ce0b3534 Fix conflicting yq packages, add conflict check, rename workflow
Tests / tests (push) Successful in 2m22s
- Remove yq from packages.x86_64 (conflicts with go-yq)
- Add conflicting packages check step to tests workflow
- Rename 'Scheduled ArchISO Build' to 'Automated Arch ISO Build'
- Add --needed to all pacman install commands to suppress reinstalls
2026-09-15 17:49:28 +10:00
alvinlollo 3c592d1e84 Fix build-iso: copy localrepo to /tmp and patch pacman.conf for CI
Tests / tests (push) Successful in 2m23s
The local-aur repo in pacman.conf points to /home/alvin/alvinarch/localrepo
which only exists on the dev machine. In CI, copy the tracked .pkg.tar.zst
files to /tmp/localrepo and sed the path before building.
2026-09-15 17:43:05 +10:00
alvinlollo aad0ea2e03 Fix build-iso: use repo root as profile, not releng/
Tests / tests (push) Successful in 2m18s
The AlvinArch profile lives at the repo root, not in a releng/
subdirectory. The old path caused mkarchiso to fail with:
  ERROR: Profile '.../releng' does not exist!
2026-09-15 17:21:57 +10:00
alvinlollo 2eb1e9f61a Switch from systemd-networkd to NetworkManager, add AGENTS.md
Tests / tests (push) Successful in 2m22s
- Replace systemd-networkd/resolved symlinks with NetworkManager
- Remove unused networkd config files (ethernet, wlan, wwan)
- Add AGENTS.md for CI/agent guidance
- Update motd and packages.x86_64
2026-09-15 17:16:50 +10:00
alvinlollo 08e947c7ea Personalize README for AlvinArch
Rewrite README to accurately reflect the AlvinArch project:
- Update overview for Hyprland + end-4 dotfiles focus
- Replace inaccurate directory tree with actual project layout
- Document real skel configs (bat, fish, nvim, hypr/custom, starship)
- Add system services and networking documentation
- Add localrepo documentation (build scripts, end4-pkgbuilds)
- Replace DTOS/KyOS VirtualBox section with concise VM notes
- Remove irrelevant DTOS/KyOS rebranding section
- Add Planned Additions table (alacritty, gtk, fontconfig, dunst)
- Add Troubleshooting and Acknowledgements sections
- Update CI badge from checks.yaml to tests.yaml
2026-09-15 17:16:31 +10:00
alvinlollo 7f9cce549f Recognize localrepo and build-end4-deps.sh in package check 2026-09-15 15:37:44 +10:00
alvinlollo b76ff09624 Fix tests: check all repo matches for each package, not just first 2026-09-15 15:37:44 +10:00
alvinlollo 10d2c90c6f Fix tests: add core repo to allowed list, strip CR from pacman output 2026-09-15 15:37:44 +10:00
alvinlollo 8ea8699957 Fix tests: reset pacman.conf, correct CachyOS mirror URL format 2026-09-15 15:37:43 +10:00
alvinlollo 83f5dbae0d Fix tests: correct CachyOS and chaotic-aur mirror URLs, install keyrings properly 2026-09-15 15:37:43 +10:00
alvinlollo a4dbec69a1 Use archlinux runner natively - no Docker needed 2026-09-15 15:37:42 +10:00
alvinlollo 3b1ef02a40 Fix tests: remove all pacman-key calls (gpg-agent broken in Docker), TrustAll SigLevel 2026-09-15 15:37:42 +10:00
alvinlollo 8a61478b82 Fix tests: skip pacman-key lsign (gpg-agent broken in Docker), rely on SigLevel TrustAll 2026-09-15 15:37:42 +10:00
alvinlollo c6592dad04 Fix tests: proper CachyOS key import via pacman-key instead of broken URL 2026-09-15 15:37:41 +10:00
alvinlollo 8e0c7a96ce Fix tests: use default Arch mirrorlist, remove broken URL 2026-09-15 15:37:41 +10:00
alvinlollo fbb30d3e19 Fix package name: yamllint not python-yamllint on Arch 2026-09-15 15:37:40 +10:00
alvinlollo 843529d124 Fix tests: checkout on host, Arch work in docker run (Gitea runner Docker mode ENOTCONN bug) 2026-09-15 15:37:40 +10:00
alvinlollo 1c4e28c0c4 Fix formatting 2026-09-15 15:37:40 +10:00
alvinlollo 0794001d68 Rename Workflow from "Checks" to "Tests" 2026-09-15 15:37:39 +10:00
alvinlollo 04fcfb2dc6 Rename "Checks" to "Tests" 2026-09-15 15:37:39 +10:00
alvinlollo ffa528744e Update status test badge 2026-09-15 15:37:38 +10:00