Hi there,
I am trying to convert the docker (compose) setup from GitHub - tannisroot/wyoming-whisper-cpp-intel-gpu-docker: Run an Intel GPU-accelerated Wyoming protocol speech-to-text service for your Home Asssistant in Docker.
The difficult part is building the image via pkgs.dockerTools
.
oneapiImage = pkgs.dockerTools.pullImage {
imageName = "intel/oneapi"; #tag 2025.0.1-0-devel-ubuntu24.04 intel-basekit intel-opencl-icd libze-intel-gpu1 libze1 libze-dev
imageDigest = "sha256:f2bbcdeeaa4ad948f9d0341797adae84254fd8f090d16e4fa0ae5d1a995333be";
hash = "sha256-WLXR0f/76zMiRitJ+nnLf5nvZqutjKU4B3Ad386nLoQ=";
finalImageName = "intel/oneapi";
finalImageTag = "2025.0.1-0-devel-ubuntu24.04";
};
imageFile = (pkgs.dockerTools.buildImage {
name = "whisper-whisper-cpp";
tag = "latest";
fromImage = oneapiImage;
diskSize = 20 * 1024;
buildVMMemorySize = 20 * 1024;
#runAsRoot = ''
# git clone https://github.com/ggerganov/whisper.cpp.git whisper.cpp \
# && cd whisper.cpp \
# && git reset --hard v${WHISPER_CPP_VERSION} \
# && cmake -B build -DGGML_SYCL=ON -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DGGML_SYCL_F16=ON \
# && cmake --build build -j --config Release
#'';
copyToRoot = pkgs.buildEnv {
name = "image-root";
pathsToLink = [ "/bin" ];
paths = [ pkgs.whisper-cpp ];
};
});
if I use runAsRoot
It works now but is a huge image.
So I decided to go even more the Nix way and tried to copyToRoot
the pkgs.whisper-cpp
.
I guess I need an overlay to get the build options in:
cmake -B build -DGGML_SYCL=ON -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DGGML_SYCL_F16=ON `
but the build is using the intel/oneapi
toolchain of the container.
I think it uses these packages: intel-basekit intel-opencl-icd libze-intel-gpu1 libze1 libze-dev
.
How to get these into Nix? Some of them are already, right?
Any ideas about the oneApi packages would be greatly appreciated!