Overview/x-repo — package repository
Repository Layout
Top level
app/ Next.js portal source (App Router)
components/ React components used by the portal
lib/ Client helpers (i18n dictionary)
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. The native workflow that consumed it is currently disabled; kept for reference indocs/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-8). Ships theos-releasetemplate, GRUB defaults, distributor logo, wallpapers and thex-release-applytool, plus pacman hooks (99-x-os-release.hook,99-x-grub.hook) that re-apply branding afterfilesystem/grubupgrades.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.
Only these two are built by build-packages.sh from their PKGBUILD today.
x-scripts: imported artifact, no source here
x-scripts is not built in this repository. Its PKGBUILD lives in the sibling
repo xlnux/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-1-any.pkg.tar.zst).
- There is no
packages/x-scripts/source directory here. - The published artifact in this repo is version
0.1.0-1; thePKGBUILDin thescriptsrepo has since moved on (pkgrel 11). Re-import an updated build fromscripts/packaging/when republishing the payload.
Prebuilt artifacts, no sources
packages/xpm/,packages/xpkg/— committed.xpbinaries (with.sigfiles).packages/xfetch/,packages/xtop/— committed.pkg.tar.zstbinaries.
These are leftovers of the native packaging path, not sources. The native workflow that
regenerated them from upstream repos is disabled (see docs/build-x-native-workflow.md).
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-8, x-dev-1.0-2, x-scripts-0.1.0-1, xpm-0.1.0-3. |
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://xlnux.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.old x.files.tar.gz.old
repo-add -n -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
sha256sum * > SHA256SUMS
repo-addcreatesx.db.tar.gzandx.files.tar.gzfrom the.pkg.tar.zstfiles.-Rremoves any package from the database that is no longer in the directory (cleanup of old versions);-nonly adds packages that are not already in the database.x.db/x.filesare plain copies of the.tar.gzfiles so pacman can read them directly.- No signing flag is passed today, so the database is regenerated unsigned.
SHA256SUMSis regenerated from every file in the directory.
public/x/x86_64/ — native .xp endpoint
Companion endpoint for xpm. It holds .xp packages (xpkg, xpm, x-release),
its own database (x.db.tar.gz, x.files.tar.gz), signing.pub/trustedkeys.gpg and
a SHA256SUMS. It was generated by the disabled native workflow and is served at
https://xlnux.github.io/x-repo/x/x86_64/. The documented xpm repository URL is
https://xlnux.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 (
build_pkgbuild x-release,build_pkgbuild x-dev) usingmakepkg -cf --noconfirm. Thebuild_xbuildhelper for the native path is present but commented out. - Copies every
packages/*/*.pkg.tar.zstintopublic/repo/x86_64/and removes the build artifact afterwards. - 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. To import an externally built package (such as x-scripts), place its
.pkg.tar.zst so the copy step picks it up (e.g. drop it under a packages/*/
directory or directly into public/repo/x86_64/ before running the script).