adapted from this
FROM debian:12.11
ARG U_NAME="user"
ARG U_ID="1000"
RUN adduser --disabled-password --gecos '' --uid ${U_ID} ${U_NAME}
WORKDIR /home/${U_NAME}
#=================================#
# download + build QEMU
USER root
# required + recommended additional packages
RUN apt-get update && apt-get install -y \
git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev ninja-build \
git-email libsdl2-dev libgtk-3-dev libvte-dev libcapstone-dev \
&& rm -rf /var/lib/apt/lists/*
# (these were also needed)
RUN apt-get update && apt-get install -y \
wget \
python3-venv \
flex \
bison \
&& rm -rf /var/lib/apt/lists/*
# for ALSA audio support
RUN apt-get update && apt-get install -y \
libasound2 \
alsa-utils \
&& rm -rf /var/lib/apt/lists/*
# (if you want JACK audio support, install these before build)
#RUN apt-get update && apt-get install -y \
# jackd2 libjack-jackd2-dev \
# && rm -rf /var/lib/apt/lists/*
USER ${U_NAME}
RUN \
wget https://download.qemu.org/qemu-10.0.2.tar.xz && \
tar xJf qemu-10.0.2.tar.xz && \
cd qemu-10.0.2 && \
./configure && \
make -j4
#=================================#
#=================================#
USER root
# for GUI stuff (via host)
RUN usermod -a -G audio ${U_NAME}
RUN usermod -a -G video ${U_NAME}
RUN groupadd -g 106 render && usermod -a -G render ${U_NAME}
#=================================#
USER ${U_NAME}
for passing audio/video from host: