Last update: 2026 September 10
Here are some template files I've created to package a couple things not in the Void Linux official repos. There is no repository for them. Users that want to use them should inspect and validate the template themselves.
# Template file for 'ivpn'
pkgname=ivpn
version=3.15.15
revision=1
archs="x86_64 aarch64"
go_import_path=github.com/ivpn/desktop-app/cli
hostmakedepends="git nodejs go cmake astyle gcc ninja libssl3 python3-pytest \
python3-pytest-xdist doxygen python3-yaml valgrind curl"
makedepends="libxslt-devel graphviz-devel graphviz-libs"
depends="openvpn wireguard-tools"
short_desc="Official IVPN Desktop app (CLI and Daemon)"
maintainer="REDACTED"
license="GPL-3.0-only"
homepage="https://www.ivpn.net"
changelog="https://raw.githubusercontent.com/ivpn/desktop-app/refs/heads/development/CHANGELOG.md"
distfiles="https://github.com/ivpn/desktop-app/archive/refs/tags/v${version}.tar.gz"
checksum=9e2723a65b61df6e191a68a22fe81cd6839c0e3dd1df4dc97be3f29157241e62
nopie_files="/opt/ivpn/obfsproxy/obfs4proxy /opt/ivpn/v2ray/v2ray \
/opt/ivpn/dnscrypt-proxy/dnscrypt-proxy"
do_build() {
# build script expects git repo
git init
git config user.name "anon"
git config user.email "anon"
git add -A
git commit -m "initial commit"
git tag -a "v{version}" -m "v${version}"
# check arch
local arch_target="amd64"
if [ "$XBPS_TARGET_MACHINE" = "aarch64" ]; then
arch_target="arm64"
fi
# Use the daemon build script from upstream
# skip glibc ver check, our version is newer and works
ARCH_TARGET="${arch_target}" IVPN_BUILD_SKIP_GLIBC_VER_CHECK=1 \
./daemon/References/Linux/scripts/build-all.sh -v ${version}
# Use the cli build script from upstream
ARCH_TARGET="${arch_target}" IVPN_BUILD_SKIP_GLIBC_VER_CHECK=1 \
./cli/References/Linux/compile-cli.sh -v ${version}
}
do_install() {
# * is architecture
for i in daemon/References/Linux/scripts/_out_bin/*/ivpn-service; do
[ -e "$i" ] && vbin "$i"
done
for i in cli/References/Linux/_out_bin/*/ivpn; do
[ -e "$i" ] && vbin "$i"
done
# third party binaries
vmkdir opt/ivpn/etc
vinstall daemon/References/common/etc/ca.crt 400 opt/ivpn/etc
vinstall daemon/References/Linux/etc/client.down 700 opt/ivpn/etc
vinstall daemon/References/Linux/etc/client.up 700 opt/ivpn/etc
vinstall daemon/References/common/etc/dnscrypt-proxy-template.toml \
400 opt/ivpn/etc
vinstall daemon/References/Linux/etc/firewall.sh 700 opt/ivpn/etc
vinstall daemon/References/common/etc/servers.json 600 opt/ivpn/etc
vinstall daemon/References/Linux/etc/splittun.sh 700 opt/ivpn/etc
vinstall daemon/References/common/etc/ta.key 400 opt/ivpn/etc
vmkdir opt/ivpn/dnscrypt-proxy
for i in daemon/References/Linux/_deps/*/dnscryptproxy_inst/dnscrypt-proxy; do
[ -e "$i" ] && vinstall "$i" 755 opt/ivpn/dnscrypt-proxy
done
vmkdir opt/ivpn/kem
for i in daemon/References/Linux/_deps/*/kem-helper/kem-helper-bin/kem-helper; do
[ -e "$i" ] && vinstall "$i" 755 opt/ivpn/kem
done
vmkdir opt/ivpn/obfsproxy
for i in daemon/References/Linux/_deps/*/obfs4proxy_inst/obfs4proxy; do
[ -e "$i" ] && vinstall "$i" 755 opt/ivpn/obfsproxy
done
vmkdir opt/ivpn/v2ray
for i in daemon/References/Linux/_deps/*/v2ray_inst/v2ray; do
[ -e "$i" ] && vinstall "$i" 755 opt/ivpn/v2ray
done
vmkdir opt/ivpn/wireguard-tools
for i in daemon/References/Linux/_deps/*/wireguard-tools_inst/wg; do
[ -e "$i" ] && vinstall "$i" 755 opt/ivpn/wireguard-tools
done
for i in daemon/References/Linux/_deps/*/wireguard-tools_inst/wg-quick; do
[ -e "$i" ] && vinstall "$i" 755 opt/ivpn/wireguard-tools
done
# runit service
vmkdir etc/sv/ivpn-service
cat << 'EOF' > ${DESTDIR}/etc/sv/ivpn-service/run
#!/bin/sh
exec /usr/bin/ivpn-service --logging
EOF
chmod +x ${DESTDIR}/etc/sv/ivpn-service/run
}
# Template file for 'sonusmix'
pkgname=sonusmix
version=0.1.1
revision=1
build_style=cargo
hostmakedepends="pkg-config clang"
makedepends="pipewire-devel gtk4-devel"
#depends="pipewire"
short_desc="Next-gen Pipewire audio routing tool"
maintainer="REDACTED"
license="MPL-2.0"
homepage="https://codeberg.org/sonusmix/sonusmix"
distfiles="https://codeberg.org/sonusmix/sonusmix/archive/v${version}.tar.gz"
checksum=363e5780924ac28041bd8596e9d570ac3e6491a2324680dd00a6469f05e65581
make_check=no # Tests fail, probably because they need a running instance of pipewire
# desktop file and related icon
post_install() {
vinstall assets/org.sonusmix.Sonusmix.desktop 644 /usr/share/applications
vinstall assets/sonusmix.svg 644 /usr/share/pixmaps org.sonusmix.Sonusmix.svg
}