The unrawk distro overlay: opinionated Void Linux defaults + ISO build machinery + the metapackage definition.
defaults/ # files staged into unrawk-defaults.xbps
sway/ # WM config + status.sh + launcher.sh
bash/ # /etc/skel rc + profile (TTY1 sway autostart)
profile.d/ # /etc/profile.d/unrawk.sh (env)
xdg/Xrawk/ # default thrawk palette
qutebrowser/ # /etc/skel/.config/qutebrowser/config.py (rawk-style binds)
fonts/ # fontconfig + Hack + Symbols NF Mono (download-deps.sh populates)
doas.conf
release.sh # --local stages tree; --public triggers GH Actions
download-deps.sh # fetches thrawk + fonts
meta/ # unrawk-base metapackage (Void deps only)
scripts/ # build_iso.sh (mklive wrapper)
iso/hooks/ # live-ISO overlay (mklive -I)
System xbps-create / xbps-install / xbps-rindex are present. ISO
build also needs:
xbps-install -Sy squashfs-tools xorriso \
qemu-system-amd64 qemu-firmware qemu-img
Skip the qemu meta — it pulls every cross-arch emulator. The three
above are ~50MB total and cover the smoke test.
Run as a single line (the multi-line \-continued form is paste-fragile
— terminals that collapse newlines turn \<space> into a literal escaped
space and apt then sees package names with a leading space):
sudo apt install -y build-essential pkgconf git curl zlib1g-dev libssl-dev libarchive-dev squashfs-tools xorriso qemu-system-x86 ovmf libwayland-dev libxkbcommon-dev libfreetype-dev
On older Devuan (chimaera/daedalus) libfreetype-dev is transitional or
absent — use libfreetype6-dev instead.
Nim (for the installer build) — Devuan's nim is usually too old; use
choosenim:
curl https://nim-lang.org/choosenim/init.sh -sSf | sh
# add ~/.nimble/bin to PATH per choosenim's instructions
Clone the siblings via the bundled script, then build xbps:
cd unrawk
bash scripts/download-vendors.sh --void-tools # clones xbps, void-mklive, unrawk-installer
cd ../xbps
./configure --enable-rpath --prefix=/usr --sysconfdir=/etc
make -j$(nproc)
sudo make install # or: make DESTDIR=$PWD/build install ; export PATH=$PWD/build/usr/bin:$PATH
On Void, drop the --void-tools flag — system xbps/mklive are present;
the script only clones unrawk-installer.
void-mklive ships Void's repo signing keys (keys/*.plist), so xbps
trusts Void's repo on first contact — no key import needed.
Run from any sibling repo's working tree (paths in build_iso.sh are
relative to itself).
# One-time per workstation, after download-vendors.sh + xbps build:
cd ../unrawk-installer
bash download-deps.sh # vendor wayluigi + rawk-luigi + freetype headers
bash release.sh --local # produces ./unrawk_installer binary
cd ../unrawk/defaults
bash download-deps.sh # vendor thrawk + Hack + Symbols NF Mono fonts
# ISO build (needs root for mklive's chroot mounts):
cd ../scripts
sudo bash build_iso.sh # → ../dist/unrawk-YYYYMMDD.iso
# Smoke test:
qemu-system-x86_64 -enable-kvm -m 4G \
-bios /usr/share/qemu/edk2-x86_64-code.fd \
-cdrom ../dist/unrawk-*.iso
build_iso.sh orchestrates: defaults/release.sh --local →
meta/build-meta.sh → wrap installer into .xbps → generate throwaway
dev signing key → xbps-rindex --sign the local repo → invoke mklive
with both Void's repo and ours. mklive does the big network download
(Void base + sway + qutebrowser etc.) into a chroot.