Skip to content

Repository files navigation

LyargoOS XBPS Repository

Custom XBPS package repository for LyargoOS, a Void Linux-based distribution.

Packages

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

Building Packages

Prerequisites

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

Add this repo as a custom source

# 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/

Build a package

./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-theme

Built packages are stored in hostdir/binpkgs/.

Custom Icons

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

Sign Packages and Publish

References

Generate Keys (one-time setup)

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" >> .gitignore

Sign and Index Packages

cd 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/*.xbps

Publish to GitHub Releases

Use 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"

Files to Upload

  • All .xbps files (binary packages)
  • All .sig2 files (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!

Fingerprint

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:45

The fingerprint is required for the ISO build to trust your repo without interactive prompts.

Or host on your own server

Serve the staging/ directory via static HTTP. Any web server works (nginx, Caddy, GitHub Pages, Cloudflare R2, etc.).

Adding the Repo to LyargoOS

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.

Adding the Repo to Void Linux

You can add this repository to any Void Linux installation:

  1. 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
  1. Add the repository:
cat << 'EOF' | sudo tee /etc/xbps.d/lyargoos.conf
repository=https://github.com/Meniny/LyargoOS-Repo/releases/latest/download
EOF
  1. Sync and install packages:
sudo xbps-install -S
sudo xbps-install qq wechat flclash

Mirror Configuration

The 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.

Quick Method

# Interactive menu
./chmirror.sh

# Or specify directly
./chmirror.sh https://mirrors.tuna.tsinghua.edu.cn/voidlinux

Common Mirrors

China:

  • 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/

Manual Method

Edit void-packages/etc/xbps.d/repos-remote*.conf and replace repo-default.voidlinux.org with your preferred mirror.

Repository Structure

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

Notes

  • Pre-built binary packages (brave, flclash, peazip-qt6) use archs="x86_64" and nostrip=yes
  • The distfiles URLs point to upstream releases — you need to fill in the checksum field after first download
  • Custom icons (SVG) can be placed in each package's files/ directory
  • The lyargoos-artwork and lyargoos-kde-theme packages both fetch from the same lyargoos-artwork repo but install different files

Updating Packages

When upstream releases a new version for packages like vscodium, onlyoffice, wps-office, ungoogled-chromium, or zen:

  1. Edit srcpkgs/<pkg>/template and update version=
  2. Regenerate checksum:
    xgensum -f srcpkgs/<pkg>/template
  3. Commit and push — CI will build automatically

The checksum is SHA256 of the source tarball from distfiles= URL. xbps-src verifies it during build.

About

Xbps repository for LyargoOS Linux

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages