Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
bd36de4
Create intel openvino genai and npu driver packages
jacob-vincent-mink Mar 25, 2026
5fd2573
Change the install folder to explicitly say genai
jacob-vincent-mink Mar 25, 2026
624980e
Change the install folder to explicitly say genai
jacob-vincent-mink Mar 25, 2026
957a829
Fix sha256sum for openvino-genai.sh in PKGBUILD
jacob-vincent-mink Mar 26, 2026
834aaa1
add missing deps
spencerbull Mar 26, 2026
9669cb7
Merge pull request #1 from spencerbull/feature/openvino-genai
jacob-vincent-mink Mar 26, 2026
4ab9a0c
add missing dependencies and fix groups
spencerbull Mar 26, 2026
aee4fc6
fix paths. update sha and clean install dir
spencerbull Mar 26, 2026
70060f0
Add extra instructions for logout flow in openvino genai install
jacob-vincent-mink Mar 27, 2026
c12f44b
[EXPERIMENT] add voxtype-openvino package
jacob-vincent-mink Mar 27, 2026
8000a63
Make voxtype-openvino point at jacob-vincent-mink/voxtype and pull ja…
jacob-vincent-mink Apr 1, 2026
e229cad
bug: voxtype build depends on cmake
jacob-vincent-mink Apr 1, 2026
6971c7c
add clang dependency
jacob-vincent-mink Apr 1, 2026
894bcc3
fix: add -ffat-lto-objects to fix ring/sqlite3 linker errors
jacob-vincent-mink Apr 1, 2026
a99286d
fix: add environment.d config so systemd services find OpenVINO libs
jacob-vincent-mink Apr 2, 2026
43630d0
fix: bake OpenVINO env into voxtype service, remove environment.d
jacob-vincent-mink Apr 2, 2026
c2e2229
fix: use ldconfig for OpenVINO lib discovery, drop LD_LIBRARY_PATH
jacob-vincent-mink Apr 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions build/packages/edge.packages
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ linux-mainline-panther-lake

# Drivers
intel-lpmd
intel-npu-driver
openvino-genai
v4l2-relayd
nvidia-580xx-utils
lib32-nvidia-580xx-utils
Expand Down
78 changes: 78 additions & 0 deletions pkgbuilds/edge/intel-npu-driver/PKGBUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# Maintainer: Omarchy <packages@omarchy.org>
# Contributor: Melvin Redondo-Tanis <melvin@redondotanis.com>

pkgname=intel-npu-driver
pkgver=1.30.0.20260311_22963593310
pkgrel=4
_main_ver=$(echo $pkgver | cut -d'.' -f1-3)
pkgdesc="Intel(R) NPU (Neural Processing Unit) Driver with Arch Linux library paths and module autoloading"
arch=('x86_64')
url="https://github.com/intel/linux-npu-driver"
license=('MIT')
depends=('glibc' 'gcc-libs' 'openssl' 'onetbb' 'level-zero-loader' 'intel-compute-runtime' 'ocl-icd')
makedepends=('chrpath')
optdepends=('level-zero-headers')
provides=('intel-npu-driver-bin' 'intel-driver-compiler-npu' 'intel-fw-npu' 'intel-level-zero-npu')
conflicts=('intel-npu-driver-bin')
install=intel-npu-driver.install
source=(
"linux-npu-driver-v${pkgver//_/-}-ubuntu2404.tar.gz::https://github.com/intel/linux-npu-driver/releases/download/v${_main_ver}/linux-npu-driver-v${pkgver//_/-}-ubuntu2404.tar.gz"
"LICENSE.md::https://raw.githubusercontent.com/intel/linux-npu-driver/main/LICENSE.md"
)
sha256sums=(
'f1a948c9345d9c6518110d67e115f1429ec955b23766a31a95c8adef5cfd939a'
'451963b6682694730dbe4889fff2ef1c20def68992e2594880c15a28e6c87be5'
)

prepare() {
cd "$srcdir"
bsdtar -xf "linux-npu-driver-v${pkgver//_/-}-ubuntu2404.tar.gz"

mkdir -p intel-driver-compiler-npu intel-fw-npu intel-level-zero-npu

local _base="${pkgver//_/-}"
local _deb_suffix="ubuntu24.04_amd64"

bsdtar -xf "intel-driver-compiler-npu_${_base}~${_deb_suffix}.deb" -C intel-driver-compiler-npu
bsdtar -xf "intel-fw-npu_${_base}~${_deb_suffix}.deb" -C intel-fw-npu
chmod 755 -R intel-fw-npu
bsdtar -xf "intel-level-zero-npu_${_base}~${_deb_suffix}.deb" -C intel-level-zero-npu
}

package() {
cd "$srcdir"

# Install firmware
bsdtar -xf intel-fw-npu/data.tar.gz -C "${pkgdir}/"
mv "${pkgdir}/lib" "${pkgdir}/usr/"

# Install driver compiler and level-zero NPU plugin
bsdtar -xf intel-driver-compiler-npu/data.tar.gz -C "${pkgdir}/"
bsdtar -xf intel-level-zero-npu/data.tar.gz -C "${pkgdir}/"

# Fix rpath on compiler library
chrpath --delete "$pkgdir/usr/lib/${CARCH}-linux-gnu/libnpu_driver_compiler.so"

# Create symlinks from Ubuntu multiarch path to standard Arch path
local _ubuntu_libdir="${pkgdir}/usr/lib/${CARCH}-linux-gnu"
if [[ -d "$_ubuntu_libdir" ]]; then
for lib in "$_ubuntu_libdir"/*.so*; do
ln -sf "${CARCH}-linux-gnu/$(basename "$lib")" "${pkgdir}/usr/lib/$(basename "$lib")"
done
fi

# License
install -Dm644 LICENSE.md "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.md"

# udev rule for NPU device access
install -dm755 "${pkgdir}/usr/lib/udev/rules.d"
echo 'SUBSYSTEM=="accel", KERNEL=="accel*", GROUP="render", MODE="0660", TAG+="uaccess"' \
> "${pkgdir}/usr/lib/udev/rules.d/99-intel-npu.rules"

# Auto-load intel_vpu kernel module at boot
install -dm755 "${pkgdir}/usr/lib/modules-load.d"
echo "intel_vpu" > "${pkgdir}/usr/lib/modules-load.d/intel-npu.conf"

# Ensure firmware is world-readable
chmod -R a+r "${pkgdir}/usr/lib/firmware/updates/intel/vpu"
}
78 changes: 78 additions & 0 deletions pkgbuilds/edge/intel-npu-driver/intel-npu-driver.install
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
_print_group_help() {
echo " Ensure your user is in the 'render' and 'video' groups:"
echo " sudo usermod -aG render,video \$USER"
echo " Then log out and back in for group changes to take effect."
}

_configure_user_groups() {
local target_user="${SUDO_USER:-}"
local group

echo ">>> Configuring user access..."

if [ -z "$target_user" ] || [ "$target_user" = "root" ]; then
echo " Could not detect a non-root user for automatic group setup."
_print_group_help
return
fi

if ! id "$target_user" >/dev/null 2>&1; then
echo " Could not find user '$target_user' for automatic group setup."
_print_group_help
return
fi

for group in render video; do
if ! getent group "$group" >/dev/null 2>&1; then
echo " Group '$group' is not available on this system."
_print_group_help
return
fi
done

if usermod -aG render,video "$target_user" 2>/dev/null; then
echo " Ensured '$target_user' is in the 'render' and 'video' groups."
echo " Log out and back in for group changes to take effect."
else
echo " Failed to update group membership for '$target_user'."
_print_group_help
fi
}

_post_message() {
local action="$1"

echo ""
echo ">>> Intel NPU driver ${action}."
_configure_user_groups
}

post_install() {
echo ">>> Reloading udev rules..."
udevadm control --reload-rules 2>/dev/null || true
udevadm trigger 2>/dev/null || true

echo ">>> Loading intel_vpu kernel module..."
modprobe intel_vpu 2>/dev/null || echo " Failed to load intel_vpu (may require reboot)"

_post_message "installed"
}

post_upgrade() {
echo ">>> Reloading udev rules..."
udevadm control --reload-rules 2>/dev/null || true
udevadm trigger 2>/dev/null || true

echo ">>> Loading intel_vpu kernel module..."
modprobe intel_vpu 2>/dev/null || echo " Failed to load intel_vpu (may require reboot)"

_post_message "upgraded"
}

post_remove() {
echo ">>> Reloading udev rules..."
udevadm control --reload-rules 2>/dev/null || true

echo ">>> You may want to unload the kernel module:"
echo " sudo modprobe -r intel_vpu"
}
30 changes: 30 additions & 0 deletions pkgbuilds/edge/openvino-genai/PKGBUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Maintainer: Omarchy <packages@omarchy.org>

pkgname=openvino-genai
pkgver=2026.0.0.0
pkgrel=5
pkgdesc="Intel OpenVINO GenAI runtime and tools for generative AI inference"
arch=('x86_64')
url="https://docs.openvino.ai/"
license=('Apache-2.0')
depends=('glibc' 'gcc-libs' 'level-zero-loader' 'intel-compute-runtime' 'ocl-icd')
install=openvino-genai.install
options=('!strip')
_srcname=openvino_genai_ubuntu24_${pkgver}_x86_64
source=("${_srcname}.tar.gz::https://storage.openvinotoolkit.org/repositories/openvino_genai/packages/2026.0/linux/${_srcname}.tar.gz"
'openvino-genai.sh'
'openvino-genai.conf')
sha256sums=('d4804ac4b0107806146a44f5fca5622c69da6001a6b4f09174079bfac1450dbc'
'f18266e633cddeda76be7abe33b92e85557b1684b6b26feb90464676ae1eb2ad'
'SKIP')

package() {
install -d "${pkgdir}/opt/intel"
cp -a "${srcdir}/${_srcname}" "${pkgdir}/opt/intel/openvino_genai_${pkgver}"
ln -s "openvino_genai_${pkgver}" "${pkgdir}/opt/intel/openvino_genai"

install -Dm644 "${srcdir}/openvino-genai.sh" "${pkgdir}/etc/profile.d/openvino-genai.sh"
install -Dm644 "${srcdir}/openvino-genai.conf" "${pkgdir}/etc/ld.so.conf.d/openvino-genai.conf"
install -Dm644 "${srcdir}/${_srcname}/docs/licensing/LICENSE-GENAI" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
install -Dm644 "${srcdir}/${_srcname}/docs/licensing/third-party-programs-genai.txt" "${pkgdir}/usr/share/licenses/${pkgname}/third-party-programs-genai.txt"
}
4 changes: 4 additions & 0 deletions pkgbuilds/edge/openvino-genai/openvino-genai-environment.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# OpenVINO GenAI environment for systemd user services
# See: man environment.d(5)
OPENVINO_INSTALL_DIR=/opt/intel/openvino_genai
INTEL_OPENVINO_DIR=/opt/intel/openvino_genai
2 changes: 2 additions & 0 deletions pkgbuilds/edge/openvino-genai/openvino-genai.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/opt/intel/openvino_genai/runtime/lib/intel64
/opt/intel/openvino_genai/runtime/3rdparty/tbb/lib
15 changes: 15 additions & 0 deletions pkgbuilds/edge/openvino-genai/openvino-genai.install
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
post_install() {
ldconfig
echo ">>> OpenVINO GenAI runtime installed."
echo ">>> Libraries are available system-wide via ldconfig."
echo ">>> Shell environment (cmake, pkg-config) available via: source /etc/profile.d/openvino-genai.sh"
echo ">>> (New login shells pick it up automatically.)"
}

post_upgrade() {
post_install
}

post_remove() {
ldconfig
}
46 changes: 46 additions & 0 deletions pkgbuilds/edge/openvino-genai/openvino-genai.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
_openvino_dir=/opt/intel/openvino_genai
_openvino_libdir="${_openvino_dir}/runtime/lib/intel64"
_openvino_tbbdir="${_openvino_dir}/runtime/3rdparty/tbb/lib"
_openvino_pkgconfig=
_openvino_ld=

if [ -d "${_openvino_dir}" ]; then
export OPENVINO_INSTALL_DIR="${_openvino_dir}"
export INTEL_OPENVINO_DIR="${_openvino_dir}"

if [ -d "${_openvino_dir}/runtime/cmake" ]; then
export OpenVINO_DIR="${_openvino_dir}/runtime/cmake"
export OpenVINOGenAI_DIR="${_openvino_dir}/runtime/cmake"
fi

if [ -d "${_openvino_libdir}" ]; then
_openvino_ld="${_openvino_libdir}"
if [ -d "${_openvino_libdir}/pkgconfig" ]; then
_openvino_pkgconfig="${_openvino_libdir}/pkgconfig"
fi
fi

if [ -d "${_openvino_tbbdir}" ]; then
_openvino_ld="${_openvino_ld:+${_openvino_ld}:}${_openvino_tbbdir}"
if [ -d "${_openvino_tbbdir}/pkgconfig" ]; then
_openvino_pkgconfig="${_openvino_pkgconfig:+${_openvino_pkgconfig}:}${_openvino_tbbdir}/pkgconfig"
fi
if [ -d "${_openvino_tbbdir}/cmake/TBB" ]; then
export TBB_DIR="${_openvino_tbbdir}/cmake/TBB"
fi
fi

if [ -n "${_openvino_ld}" ]; then
export LD_LIBRARY_PATH="${_openvino_ld}${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
fi

if [ -n "${_openvino_pkgconfig}" ]; then
export PKG_CONFIG_PATH="${_openvino_pkgconfig}${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}"
fi
fi

unset _openvino_dir
unset _openvino_libdir
unset _openvino_tbbdir
unset _openvino_pkgconfig
unset _openvino_ld
51 changes: 51 additions & 0 deletions pkgbuilds/edge/voxtype-openvino/.SRCINFO
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
pkgbase = voxtype-openvino
pkgdesc = Push-to-talk voice-to-text for Linux (OpenVINO/NPU build)
pkgver = 0.6.4
pkgrel = 1
url = https://voxtype.io
install = voxtype-openvino.install
arch = x86_64
license = MIT
makedepends = git
makedepends = cargo
makedepends = rust
makedepends = cmake
depends = alsa-lib
depends = curl
depends = gcc-libs
depends = glibc
depends = intel-npu-driver
depends = openvino-genai
optdepends = wtype: keyboard simulation for Wayland (recommended, best CJK support)
optdepends = dotool: keyboard simulation with layout support (KDE/GNOME compatible)
optdepends = ydotool: keyboard simulation fallback (X11/TTY support)
optdepends = wl-clipboard: clipboard support
optdepends = libnotify: desktop notifications
optdepends = pipewire: audio server (recommended)
optdepends = pipewire-alsa: ALSA compatibility for PipeWire (required if using PipeWire)
optdepends = pulseaudio: audio server (alternative to PipeWire)
optdepends = ollama: local AI summarization for meeting mode
provides = voxtype
conflicts = voxtype
conflicts = voxtype-bin
backup = etc/voxtype/config.toml
source = voxtype::git+https://github.com/jacob-vincent-mink/voxtype.git#branch=feature/intel-npu
source = openvino-rs::git+https://github.com/jacob-vincent-mink/openvino-rs.git#branch=feature/genai
source = config-0.6.4.toml::https://raw.githubusercontent.com/peteonrails/voxtype/v0.6.4/config/default.toml
source = voxtype-0.6.4.service::https://raw.githubusercontent.com/peteonrails/voxtype/v0.6.4/packaging/systemd/voxtype.service
source = voxtype-0.6.4.bash::https://raw.githubusercontent.com/peteonrails/voxtype/v0.6.4/packaging/completions/voxtype.bash
source = voxtype-0.6.4.zsh::https://raw.githubusercontent.com/peteonrails/voxtype/v0.6.4/packaging/completions/voxtype.zsh
source = voxtype-0.6.4.fish::https://raw.githubusercontent.com/peteonrails/voxtype/v0.6.4/packaging/completions/voxtype.fish
source = LICENSE-0.6.4::https://raw.githubusercontent.com/peteonrails/voxtype/v0.6.4/LICENSE
source = README-0.6.4.md::https://raw.githubusercontent.com/peteonrails/voxtype/v0.6.4/README.md
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP

pkgname = voxtype-openvino
6 changes: 6 additions & 0 deletions pkgbuilds/edge/voxtype-openvino/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
*
!.nvchecker.toml
!.gitignore
!*.install
!PKGBUILD
!.SRCINFO
5 changes: 5 additions & 0 deletions pkgbuilds/edge/voxtype-openvino/.nvchecker.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[voxtype-openvino]
source = "github"
github = "jacob-vincent-mink/voxtype"
use_latest_release = true
prefix = "v"
Loading