Custom XBPS package repository for LyargoOS, a Void Linux-based distribution.
| Package | Description | Source |
|---|---|---|
brave |
Brave web browser | Upstream GitHub releases |
calamares |
GUI installer (with runit patches for Void) | Upstream Codeberg + Void patches |
flclash |
Multi-platform proxy client | Upstream AppImage |
onlyoffice |
Office suite | Upstream GitHub releases |
peazip-qt6 |
File archiver and compressor (Qt6) | Upstream tarball |
ungoogled-chromium |
Chromium without Google services | Upstream GitHub releases |
vscodium |
Free/Libre VS Code binaries | Upstream GitHub releases |
wps-office |
WPS Office suite | Upstream RPM |
zen |
Zen Browser | Upstream GitHub releases |
lyargoos-artwork |
Wallpapers, logos, splash | LyargoOS-Artworks |
lyargoos-calamares-config |
Calamares config and LyargoOS branding | LyargoOS-Repo |
lyargoos-kde-theme |
KDE Plasma theme (color scheme, SDDM, desktop) | LyargoOS-Artworks |
You need void-packages to build packages.
# Clone void-packages
git clone https://github.com/void-linux/void-packages.git
cd void-packages
# Bootstrap (if not already done)
./xbps-src binary-bootstrap# In your void-packages checkout, add this repo's srcpkgs
# Option 1: Symlink
ln -s /path/to/lyargoos-repo/srcpkgs/* srcpkgs/
# Option 2: Copy
cp -r /path/to/lyargoos-repo/srcpkgs/* srcpkgs/./xbps-src pkg brave
./xbps-src pkg calamares
./xbps-src pkg flclash
./xbps-src pkg peazip-qt6
./xbps-src pkg lyargoos-artwork
./xbps-src pkg lyargoos-calamares-config
./xbps-src pkg lyargoos-kde-themeBuilt packages are stored in hostdir/binpkgs/.
To use custom SVG icons for apps (instead of upstream PNGs), place your SVG files in the package's files/ directory and update the template's do_install() to install them. For example:
# In brave/template do_install():
vinstall ${FILESDIR}/brave.svg 644 usr/share/icons/hicolor/scalable/apps brave-desktop.svg- xbps-rindex(1) man page — official documentation for repository management and signing
- XBPS Repositories — Void Linux repository documentation
mkdir -p staging
# Generate private RSA key (leave passphrase empty for CI compatibility)
openssl genrsa -out staging/private.pem 4096
# Extract public key
openssl rsa -in staging/private.pem -pubout -out staging/LyargoOS.pub
# Copy public key to ISO builder so XBPS trusts our repo
mkdir -p ../lyargoos/overlay/common/etc/xbps.d/
cp staging/LyargoOS.pub ../lyargoos/overlay/common/etc/xbps.d/
# DO NOT COMMIT PRIVATE KEY
echo "staging/private.pem" >> .gitignorecd staging
# 1. Create package index for x86_64
xbps-rindex -a *.xbps
# 2. Create package index for aarch64 (if any exist)
if ls *.aarch64.xbps 1>/dev/null 2>&1; then
XBPS_ARCH=aarch64 xbps-rindex -a *.aarch64.xbps
fi
# 3. Initialize signed repository (adds signing metadata)
xbps-rindex --privkey private.pem --sign --signedby "LyargoOS" $PWD
# 4. Sign all packages (both x86_64 and aarch64)
xbps-rindex --privkey private.pem --sign-pkg $PWD/*.xbpsUse the provided script (run without arguments for interactive mode):
# Interactive mode - prompts for mode, tag, title, and notes
./publish.sh
# Or provide arguments directly
# Create new tag and release
./publish.sh -n v0.1 "v0.1 - Initial packages" "Initial package set for LyargoOS"
# Delete and recreate release only (keeps existing git tag)
./publish.sh -r v0.1 "v0.1 - Updated packages" "Rebuilt packages"
# Delete and recreate both tag and release
./publish.sh -R v0.2 "v0.2 - New release" "New tag and release"- All
.xbpsfiles (binary packages) - All
.sig2files (package signatures) x86_64-repodata(package index)aarch64-repodata(if you have aarch64 packages)LyargoOS.pub(public key for verification)
DO NOT upload private.pem!
The fingerprint file is automatically generated by publish.sh using the xbps-fingerprint tool.
The xbps-fingerprint tool is extracted directly from XBPS source code (lib/pubkey2fp.c) and calculates the fingerprint exactly as XBPS does internally: MD5 hash of the OpenSSH-format RSA public key blob.
Manual usage:
# Build the tool (if not already built)
make -f Makefile.fingerprint
# Calculate fingerprint from public key
./xbps-fingerprint staging/LyargoOS.pub
# Output: ca:76:94:06:80:94:e5:01:36:da:6f:81:ab:3a:da:45The fingerprint is required for the ISO build to trust your repo without interactive prompts.
Serve the staging/ directory via static HTTP. Any web server works (nginx, Caddy, GitHub Pages, Cloudflare R2, etc.).
In lyargoos/lyargoos.conf, add your repo URL:
REPOS=(
"https://github.com/Meniny/LyargoOS-Repo/releases/latest/download"
)Then add packages to BASE_PACKAGES (for all flavors) or flavor-specific variables like KDE_PKGS, XFCE_PKGS, GNOME_PKGS.
You can add this repository to any Void Linux installation:
- Download the public key:
sudo mkdir -p /etc/xbps.d
sudo wget -O /etc/xbps.d/LyargoOS.pub https://github.com/Meniny/LyargoOS-Repo/releases/latest/download/LyargoOS.pub- Add the repository:
cat << 'EOF' | sudo tee /etc/xbps.d/lyargoos.conf
repository=https://github.com/Meniny/LyargoOS-Repo/releases/latest/download
EOF- Sync and install packages:
sudo xbps-install -S
sudo xbps-install qq wechat flclashThe default Void mirror (repo-default.voidlinux.org) may be slow depending on your location. Use chmirror.sh to switch to a faster mirror for package builds.
# Interactive menu
./chmirror.sh
# Or specify directly
./chmirror.sh https://mirrors.tuna.tsinghua.edu.cn/voidlinuxChina:
- Tsinghua:
https://mirrors.tuna.tsinghua.edu.cn/voidlinux - Aliyun:
https://mirrors.aliyun.com/voidlinux - USTC:
https://mirrors.ustc.edu.cn/voidlinux
United States:
- Clarkson:
https://mirror.clarkson.edu/voidlinux - OCF Berkeley:
https://mirrors.ocf.berkeley.edu/voidlinux
Europe:
- Leaseweb DE:
https://mirror.de.leaseweb.net/voidlinux - Leaseweb NL:
https://mirror.nl.leaseweb.net/voidlinux
Official: https://repo-default.voidlinux.org
More mirrors: https://voidlinux.org/download/
Edit void-packages/etc/xbps.d/repos-remote*.conf and replace repo-default.voidlinux.org with your preferred mirror.
lyargoos-repo/
├── README.md
├── build.sh # Build packages via void-packages
├── chmirror.sh # Switch XBPS mirror
├── publish.sh # Copy built packages, sign, and publish to GitHub Releases
├── xbps-fingerprint.c # Fingerprint calculator (from XBPS source)
├── Makefile.fingerprint # Build script for xbps-fingerprint
├── srcpkgs/
│ ├── brave/
│ │ ├── template
│ │ └── files/ # Wrapper script, desktop file, custom icons
│ ├── calamares/
│ │ ├── template
│ │ ├── patches/ # Runit/locale/fstab patches for Void Linux
│ │ └── files/ # Polkit rules
│ ├── flclash/
│ │ ├── template
│ │ └── files/
│ ├── onlyoffice/
│ │ └── template
│ ├── peazip-qt6/
│ │ ├── template
│ │ └── files/
│ ├── ungoogled-chromium/
│ │ ├── template
│ │ └── files/
│ ├── vscodium/
│ │ ├── template
│ │ └── files/
│ ├── wps-office/
│ │ └── template
│ ├── zen/
│ │ ├── template
│ │ └── files/
│ ├── lyargoos-artwork/
│ │ └── template # Fetches from LyargoOS-Artworks repo
│ ├── lyargoos-calamares-config/
│ │ ├── template
│ │ └── files/ # Calamares settings, branding, module configs
│ └── lyargoos-kde-theme/
│ └── template # Fetches from LyargoOS-Artworks repo
└── void-packages/ # Submodule
- Pre-built binary packages (brave, flclash, peazip-qt6) use
archs="x86_64"andnostrip=yes - The
distfilesURLs point to upstream releases — you need to fill in thechecksumfield after first download - Custom icons (SVG) can be placed in each package's
files/directory - The
lyargoos-artworkandlyargoos-kde-themepackages both fetch from the samelyargoos-artworkrepo but install different files
When upstream releases a new version for packages like vscodium, onlyoffice, wps-office, ungoogled-chromium, or zen:
- Edit
srcpkgs/<pkg>/templateand updateversion= - Regenerate checksum:
xgensum -f srcpkgs/<pkg>/template
- Commit and push — CI will build automatically
The checksum is SHA256 of the source tarball from distfiles= URL. xbps-src verifies it during build.