Overview/x-repo — package repository
Repository Layout
Top level
app/ Next.js page (layout, page and styles)
packages/ Package sources and build artifacts
public/ Static content served on GitHub Pages
repo/x86_64/ [x] pacman repository (db + .pkg.tar.zst tarballs)
x/x86_64/ Native endpoint (.xp packages) used by xpm
images/, fonts/ Website assets
build-packages.sh Local build + repo-add script
docs/ Documentation
.github/workflows/ CI/CD workflows
packages/
One directory per package. Each may contain a PKGBUILD, an XBUILD, or both, plus
package-local files.
PKGBUILD— Arch-compatible source descriptor. Built withmakepkg, produces a.pkg.tar.zstfor the pacman repository.XBUILD— native descriptor for the xpkg/xpm path, produces an.xppackage. Built and published byscripts/build-xp.sh(seedocs/build-x-native-workflow.md).
The README notes that while PKGBUILD is kept for legacy Arch tooling, XBUILD is the
native path for xpkg/xpm.
Buildable packages (PKGBUILD)
x-release— X Linux identity and branding (PKGBUILD1.0-9). Ships theos-releasetemplate, GRUB defaults, distributor logo and thex-release-applytool, plus pacman hooks (99-x-os-release.hook,99-x-grub.hook) that re-apply branding afterfilesystem/grubupgrades. GRUB handling is optional (/boot/grubguard), so the package is safe on headless systems such as WSL; wallpapers live inx-wallpapers(optdepends).x-wallpapers— desktop wallpapers (PKGBUILD1.0-1). Installs/usr/share/backgrounds/x/x-wallpaper.{png,jpg}. Kept separate so headless installs do not carry the images.x-kde-settings— X Plasma branding (PKGBUILD1.0-2): X Dark colors, look-and-feel, wallpaper and SDDM theme, plus/etc/skeldefaults and the first-login autostart. The[x]repository currently publishes1.0-1; the1.0-2build ships inside the live ISO for the desktop test images.x-dev— development environment package (PKGBUILD1.0-2). Installs/usr/bin/x-dev-envand helpers under/usr/share/x-dev/(shell aliases, NVIDIA/QEMU/Node setup scripts). Depends onzsh git base-devel curl wget.install=x-dev.installruns the post-install logic.opencode-bin— official prebuilt binary of the opencode CLI (anomalyco/opencode,1.18.34), redistributed soagents=yesandx agentusers get a working agent without AUR.provides/conflictsopencode; the tarball is checksummed in the PKGBUILD.
The pacman [x] artifacts are built with build-packages.sh (makepkg +
repo-add); the native .xp endpoint is built with scripts/build-xp.sh
(xpkg). Recipes use PKGBUILD (Arch-compatible) or XBUILD (native).
x-scripts: imported artifact, no source here
x-scripts is not built in this repository. Its PKGBUILD lives in the sibling
repo equislinux/scripts under scripts/packaging/ and packages the whole provisioning
payload (phases, CLI x, configs). The resulting tarball is built there and imported
into this repo, committed under public/repo/x86_64/ (currently
x-scripts-0.1.0-39-any.pkg.tar.zst).
- There is no
packages/x-scripts/source directory here. - The latest published artifact is
0.1.0-39; thescripts/packaging/source is at0.1.0-42, bundled in the 2026.10.27 ISO.build-packages.shimports the sibling build; re-run it when publishing 42 to[x].
Recipes only
packages/*/ hold build recipes (PKGBUILD, XBUILD and helper files); built
binaries live only in the generated repositories (public/repo/x86_64 for pacman,
public/x/x86_64 for xpm).
public/repo/x86_64/ — the [x] pacman repository
This directory is the pacman-facing repository. Files present:
| File | Role |
|---|---|
x.db, x.db.tar.gz | Package database (x.db is the uncompressed copy of x.db.tar.gz). |
x.files, x.files.tar.gz | File-list database for pacman -F. |
*.pkg.tar.zst | The packages: x-release-1.0-9, x-wallpapers-1.0-1, x-dev-1.0-2, x-scripts-0.1.0-39, x-kde-settings-1.0-1, xpm-0.1.0-3, xfetch-bin-1.0.0-1, xtop-git-r35.cb17bb7-1, opencode-bin-1.18.34-1. |
SHA256SUMS | Checksums over every file in the directory. |
signing.pub, trustedkeys.gpg | Signing/trust material consumed by the native endpoint. |
Clients configure the repository in pacman.conf as:
[x]
Server = https://equislinux.github.io/x-repo/repo/x86_64
How the database is updated (repo-add)
The database is never edited by hand. build-packages.sh regenerates it with
repo-add:
cd public/repo/x86_64
rm -f x.db x.files x.db.tar.gz x.files.tar.gz x.db.tar.gz.old x.files.tar.gz.old
repo-add -R x.db.tar.gz *.pkg.tar.zst
rm -f x.db x.files
cp x.db.tar.gz x.db
cp x.files.tar.gz x.files
rm -f SHA256SUMS SHA256SUMS.sig
sha256sum $(find . -maxdepth 1 -type f ! -name 'SHA256SUMS*' -printf '%P\n' | sort) > SHA256SUMS
repo-addcreatesx.db.tar.gzandx.files.tar.gzfrom the.pkg.tar.zstfiles.- The database is rebuilt from scratch from the tarballs present in the directory, so entries for packages that no longer exist are dropped too.
x.db/x.filesare plain copies of the.tar.gzfiles so pacman can read them directly.- With
X_REPO_SIGN_KEYset,repo-add -ssigns the database and every artifact (seesigning.md); without a key the repository is published unsigned and a warning is printed. SHA256SUMSis regenerated from every file in the directory.
public/x/x86_64/ — native .xp endpoint
Companion endpoint for xpm. It holds .xp packages (xpm, xpkg, x-release, x-dev,
xfetch-bin, xtop-git, opencode-bin, x-scripts), its own database (x.db.tar.gz,
x.files.tar.gz plus x.db/x.files copies), per-file signatures, history.json,
signing.pub/trustedkeys.gpg and a SHA256SUMS. Regenerate it with
scripts/build-xp.sh; it deploys with the same Pages workflow. Served at
https://equislinux.github.io/x-repo/x/x86_64/. The documented xpm repository URL is
https://equislinux.github.io/x-repo/x/$arch.
build-packages.sh
Local script (run from the repo root, requires an Arch-like environment with
makepkg and repo-add). It:
- Builds the configured PKGBUILD packages in place (
x-release,x-wallpapers,x-dev,x-kde-settings,opencode-bin,xfetch,xtop) usingmakepkg -cf --noconfirm. Thebuild_xbuildhelper for the native path is present but commented out. - Imports
../scripts/packaging/x-scripts-*.pkg.tar.zstwhen present, copies the freshly built packages intopublic/repo/x86_64/and removes the build artifacts afterwards (the committed leftovers under the otherpackages/*directories are not touched). - Regenerates the pacman database and
SHA256SUMSas shown above. - Prints the closing reminder:
Commit public/repo/x86_64/ and push, then run the deploy workflow.
To add a new PKGBUILD package to the flow, add its directory to build_pkgbuild
calls. Externally built packages (such as x-scripts) are imported automatically
from ../scripts/packaging/; you can also drop a .pkg.tar.zst directly into
public/repo/x86_64/ before running ./build-packages.sh --index-only.