dev-desktop-amd (sha256:04f06901b56c9877f7709f831624a49c4cbbac3d5588fddfd60610e6e4d43e07)

Published 2025-12-12 15:47:31 +00:00 by will

Installation

docker pull git.happyvertical.com/will/dev-desktop-amd@sha256:04f06901b56c9877f7709f831624a49c4cbbac3d5588fddfd60610e6e4d43e07
sha256:04f06901b56c9877f7709f831624a49c4cbbac3d5588fddfd60610e6e4d43e07

Image layers

ARG RELEASE
ARG LAUNCHPAD_BUILD_ARCH
LABEL org.opencontainers.image.ref.name=ubuntu
LABEL org.opencontainers.image.version=24.04
ADD file:249778a1782b02a1c2bcf9f292f5778d81442a53c3de1958d712f10baf7e0b60 in /
CMD ["/bin/bash"]
ARG DISTRIB_IMAGE=ubuntu
ARG DISTRIB_RELEASE=24.04
LABEL maintainer=https://github.com/ehfd,https://github.com/danisla
ARG DEBIAN_FRONTEND=noninteractive
ARG TZ=UTC
ENV PASSWD=mypasswd
RUN |4 DISTRIB_IMAGE=ubuntu DISTRIB_RELEASE=24.04 DEBIAN_FRONTEND=noninteractive TZ=UTC /bin/sh -c apt-get clean && apt-get update && apt-get dist-upgrade -y && apt-get install --no-install-recommends -y apt-utils dbus-user-session fakeroot fuse kmod locales ssl-cert sudo udev tzdata && apt-get clean && rm -rf /var/lib/apt/lists/* /var/cache/debconf/* /var/log/* /tmp/* /var/tmp/* && locale-gen en_US.UTF-8 && ln -snf "/usr/share/zoneinfo/${TZ}" /etc/localtime && echo "${TZ}" > /etc/timezone && mv -f /usr/bin/sudo /usr/bin/sudo-root && ln -snf /usr/bin/fakeroot /usr/bin/sudo && groupadd -g 1000 ubuntu || echo 'Failed to add ubuntu group' && useradd -ms /bin/bash ubuntu -u 1000 -g 1000 || echo 'Failed to add ubuntu user' && usermod -a -G adm,audio,cdrom,dialout,dip,fax,floppy,games,input,lp,plugdev,render,ssl-cert,sudo,tape,tty,video,voice ubuntu && echo "ubuntu ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers && echo "ubuntu:${PASSWD}" | chpasswd && chown -R -f -h --no-preserve-root ubuntu:ubuntu / || echo 'Failed to set filesystem ownership in some paths to ubuntu user' && chmod -f 4755 /usr/lib/dbus-1.0/dbus-daemon-launch-helper /usr/bin/chfn /usr/bin/chsh /usr/bin/mount /usr/bin/gpasswd /usr/bin/passwd /usr/bin/newgrp /usr/bin/umount /usr/bin/su /usr/bin/sudo-root /usr/bin/fusermount || echo 'Failed to set chmod setuid for some paths' && chmod -f 2755 /var/local /var/mail /usr/sbin/unix_chkpwd /usr/sbin/pam_extrausers_chkpwd /usr/bin/expiry /usr/bin/chage || echo 'Failed to set chmod setgid for some paths' # buildkit
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en
ENV LC_ALL=en_US.UTF-8
USER 1000
SHELL [/usr/bin/fakeroot -- /bin/sh -c]
RUN |4 DISTRIB_IMAGE=ubuntu DISTRIB_RELEASE=24.04 DEBIAN_FRONTEND=noninteractive TZ=UTC /usr/bin/fakeroot -- /bin/sh -c apt-get update && apt-get install --no-install-recommends -y software-properties-common build-essential ca-certificates cups-browsed cups-bsd cups-common cups-filters printer-driver-cups-pdf alsa-base alsa-utils file gnupg curl wget bzip2 gzip xz-utils unar rar unrar zip unzip zstd gcc git dnsutils coturn jq python3 python3-cups python3-numpy nano vim htop fonts-dejavu fonts-freefont-ttf fonts-hack fonts-liberation fonts-noto fonts-noto-cjk fonts-noto-cjk-extra fonts-noto-color-emoji fonts-noto-extra fonts-noto-ui-extra fonts-noto-hinted fonts-noto-mono fonts-noto-unhinted fonts-opensymbol fonts-symbola fonts-ubuntu lame less libavcodec-extra libpulse0 supervisor net-tools packagekit-tools pkg-config mesa-utils mesa-va-drivers libva2 vainfo vdpau-driver-all libvdpau-va-gl1 vdpauinfo mesa-vulkan-drivers vulkan-tools radeontop libvulkan-dev ocl-icd-libopencl1 clinfo xkb-data xauth xbitmaps xdg-user-dirs xdg-utils xfonts-base xfonts-scalable xinit xsettingsd libxrandr-dev x11-xkb-utils x11-xserver-utils x11-utils x11-apps xserver-xorg-input-all xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-intel xserver-xorg-video-qxl libc6-dev libpci3 libelf-dev libglvnd-dev libxau6 libxdmcp6 libxcb1 libxext6 libx11-6 libxv1 libxtst6 libdrm2 libegl1 libgl1 libopengl0 libgles1 libgles2 libglvnd0 libglx0 libglu1 libsm6 nginx apache2-utils netcat-openbsd && sed -i -e 's/\/var\/log\/nginx\/access\.log/\/dev\/stdout/g' -e 's/\/var\/log\/nginx\/error\.log/\/dev\/stderr/g' -e 's/\/run\/nginx\.pid/\/tmp\/nginx\.pid/g' /etc/nginx/nginx.conf && echo "error_log /dev/stderr;" >> /etc/nginx/nginx.conf && mkdir -pm755 /etc/apt/trusted.gpg.d && curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xFC43B7352BCC0EC8AF2EEB8B25088A0359807596" | gpg --dearmor -o /etc/apt/trusted.gpg.d/pipewire-debian-ubuntu-pipewire-upstream.gpg && mkdir -pm755 /etc/apt/sources.list.d && echo "deb https://ppa.launchpadcontent.net/pipewire-debian/pipewire-upstream/ubuntu $(grep '^VERSION_CODENAME=' /etc/os-release | cut -d= -f2 | tr -d '\"') main" > "/etc/apt/sources.list.d/pipewire-debian-ubuntu-pipewire-upstream-$(grep '^VERSION_CODENAME=' /etc/os-release | cut -d= -f2 | tr -d '\"').list" && mkdir -pm755 /etc/apt/sources.list.d && echo "deb https://ppa.launchpadcontent.net/pipewire-debian/wireplumber-upstream/ubuntu $(grep '^VERSION_CODENAME=' /etc/os-release | cut -d= -f2 | tr -d '\"') main" > "/etc/apt/sources.list.d/pipewire-debian-ubuntu-wireplumber-upstream-$(grep '^VERSION_CODENAME=' /etc/os-release | cut -d= -f2 | tr -d '\"').list" && apt-get update && apt-get install --no-install-recommends -y pipewire pipewire-alsa pipewire-audio-client-libraries pipewire-jack pipewire-locales pipewire-v4l2 pipewire-vulkan pipewire-libcamera gstreamer1.0-libcamera gstreamer1.0-pipewire libpipewire-0.3-modules libpipewire-module-x11-bell libspa-0.2-bluetooth libspa-0.2-jack libspa-0.2-modules wireplumber wireplumber-locales gir1.2-wp-0.5 && if [ "$(dpkg --print-architecture)" = "amd64" ]; then dpkg --add-architecture i386 && apt-get update && apt-get install --no-install-recommends -y intel-gpu-tools nvtop va-driver-all i965-va-driver-shaders intel-media-va-driver-non-free va-driver-all:i386 i965-va-driver-shaders:i386 intel-media-va-driver-non-free:i386 libva2:i386 vdpau-driver-all:i386 mesa-vulkan-drivers:i386 libvulkan-dev:i386 libc6:i386 libxau6:i386 libxdmcp6:i386 libxcb1:i386 libxext6:i386 libx11-6:i386 libxv1:i386 libxtst6:i386 libdrm2:i386 libegl1:i386 libgl1:i386 libopengl0:i386 libgles1:i386 libgles2:i386 libglvnd0:i386 libglx0:i386 libglu1:i386 libsm6:i386; fi && if [ "$(grep '^VERSION_ID=' /etc/os-release | cut -d= -f2 | tr -d '\"')" \> "20.04" ]; then apt-get update && apt-get install --no-install-recommends -y meson gstreamer1.0-plugins-bad libffmpeg-nvenc-dev libva-dev libegl-dev libgstreamer-plugins-bad1.0-dev && NVIDIA_VAAPI_DRIVER_VERSION="$(curl -fsSL "https://api.github.com/repos/elFarto/nvidia-vaapi-driver/releases/latest" | jq -r '.tag_name' | sed 's/[^0-9\.\-]*//g')" && cd /tmp && curl -fsSL "https://github.com/elFarto/nvidia-vaapi-driver/archive/v${NVIDIA_VAAPI_DRIVER_VERSION}.tar.gz" | tar -xzf - && mv -f nvidia-vaapi-driver* nvidia-vaapi-driver && cd nvidia-vaapi-driver && meson setup build && meson install -C build && rm -rf /tmp/*; fi && apt-get clean && rm -rf /var/lib/apt/lists/* /var/cache/debconf/* /var/log/* /tmp/* /var/tmp/* && echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf && echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf && mkdir -pm755 /etc/OpenCL/vendors && echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd && VULKAN_API_VERSION=$(dpkg -s libvulkan1 | grep -oP 'Version: [0-9|\.]+' | grep -oP '[0-9]+(\.[0-9]+)(\.[0-9]+)') && mkdir -pm755 /etc/vulkan/icd.d/ && echo "{\n \"file_format_version\" : \"1.0.0\",\n \"ICD\": {\n \"library_path\": \"libGLX_nvidia.so.0\",\n \"api_version\" : \"${VULKAN_API_VERSION}\"\n }\n}" > /etc/vulkan/icd.d/nvidia_icd.json && mkdir -pm755 /usr/share/glvnd/egl_vendor.d/ && echo "{\n \"file_format_version\" : \"1.0.0\",\n \"ICD\": {\n \"library_path\": \"libEGL_nvidia.so.0\"\n }\n}" > /usr/share/glvnd/egl_vendor.d/10_nvidia.json # buildkit
ENV PATH=/usr/local/nvidia/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64
ENV NVIDIA_VISIBLE_DEVICES=all
ENV NVIDIA_DRIVER_CAPABILITIES=all
ENV __GL_SYNC_TO_VBLANK=0
ENV DISPLAY=:20
ENV DISPLAY_SIZEW=1920
ENV DISPLAY_SIZEH=1080
ENV DISPLAY_REFRESH=60
ENV DISPLAY_DPI=96
ENV DISPLAY_CDEPTH=24
ENV VGL_DISPLAY=egl
ENV KASMVNC_ENABLE=false
ENV SELKIES_ENCODER=nvh264enc
ENV SELKIES_ENABLE_RESIZE=false
ENV SELKIES_ENABLE_BASIC_AUTH=true
RUN |4 DISTRIB_IMAGE=ubuntu DISTRIB_RELEASE=24.04 DEBIAN_FRONTEND=noninteractive TZ=UTC /usr/bin/fakeroot -- /bin/sh -c apt-get update && apt-get install --no-install-recommends -y xvfb && apt-get clean && rm -rf /var/lib/apt/lists/* /var/cache/debconf/* /var/log/* /tmp/* /var/tmp/* # buildkit
RUN |4 DISTRIB_IMAGE=ubuntu DISTRIB_RELEASE=24.04 DEBIAN_FRONTEND=noninteractive TZ=UTC /usr/bin/fakeroot -- /bin/sh -c cd /tmp && VIRTUALGL_VERSION="$(curl -fsSL "https://api.github.com/repos/VirtualGL/virtualgl/releases/latest" | jq -r '.tag_name' | sed 's/[^0-9\.\-]*//g')" && if [ "$(dpkg --print-architecture)" = "amd64" ]; then dpkg --add-architecture i386 && curl -fsSL -O "https://github.com/VirtualGL/virtualgl/releases/download/${VIRTUALGL_VERSION}/virtualgl_${VIRTUALGL_VERSION}_amd64.deb" && curl -fsSL -O "https://github.com/VirtualGL/virtualgl/releases/download/${VIRTUALGL_VERSION}/virtualgl32_${VIRTUALGL_VERSION}_amd64.deb" && apt-get update && apt-get install -y --no-install-recommends "./virtualgl_${VIRTUALGL_VERSION}_amd64.deb" "./virtualgl32_${VIRTUALGL_VERSION}_amd64.deb" && rm -f "virtualgl_${VIRTUALGL_VERSION}_amd64.deb" "virtualgl32_${VIRTUALGL_VERSION}_amd64.deb" && chmod -f u+s /usr/lib/libvglfaker.so /usr/lib/libvglfaker-nodl.so /usr/lib/libvglfaker-opencl.so /usr/lib/libdlfaker.so /usr/lib/libgefaker.so && chmod -f u+s /usr/lib32/libvglfaker.so /usr/lib32/libvglfaker-nodl.so /usr/lib32/libvglfaker-opencl.so /usr/lib32/libdlfaker.so /usr/lib32/libgefaker.so && chmod -f u+s /usr/lib/i386-linux-gnu/libvglfaker.so /usr/lib/i386-linux-gnu/libvglfaker-nodl.so /usr/lib/i386-linux-gnu/libvglfaker-opencl.so /usr/lib/i386-linux-gnu/libdlfaker.so /usr/lib/i386-linux-gnu/libgefaker.so; elif [ "$(dpkg --print-architecture)" = "arm64" ]; then curl -fsSL -O "https://github.com/VirtualGL/virtualgl/releases/download/${VIRTUALGL_VERSION}/virtualgl_${VIRTUALGL_VERSION}_arm64.deb" && apt-get update && apt-get install -y --no-install-recommends ./virtualgl_${VIRTUALGL_VERSION}_arm64.deb && rm -f "virtualgl_${VIRTUALGL_VERSION}_arm64.deb" && chmod -f u+s /usr/lib/libvglfaker.so /usr/lib/libvglfaker-nodl.so /usr/lib/libdlfaker.so /usr/lib/libgefaker.so; fi && apt-get clean && rm -rf /var/lib/apt/lists/* /var/cache/debconf/* /var/log/* /tmp/* /var/tmp/* # buildkit
RUN |4 DISTRIB_IMAGE=ubuntu DISTRIB_RELEASE=24.04 DEBIAN_FRONTEND=noninteractive TZ=UTC /usr/bin/fakeroot -- /bin/sh -c mkdir -pm755 /etc/apt/preferences.d && echo "Package: firefox*\nPin: version 1:1snap*\nPin-Priority: -1" > /etc/apt/preferences.d/firefox-nosnap && mkdir -pm755 /etc/apt/trusted.gpg.d && curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x738BEB9321D1AAEC13EA9391AEBDF4819BE21867" | gpg --dearmor -o /etc/apt/trusted.gpg.d/mozillateam-ubuntu-ppa.gpg && mkdir -pm755 /etc/apt/sources.list.d && echo "deb https://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu $(grep '^VERSION_CODENAME=' /etc/os-release | cut -d= -f2 | tr -d '\"') main" > "/etc/apt/sources.list.d/mozillateam-ubuntu-ppa-$(grep '^VERSION_CODENAME=' /etc/os-release | cut -d= -f2 | tr -d '\"').list" && apt-get update && apt-get install --no-install-recommends -y kde-baseapps plasma-desktop plasma-workspace adwaita-icon-theme-full appmenu-gtk3-module ark aspell aspell-en breeze breeze-cursor-theme breeze-gtk-theme breeze-icon-theme dbus-x11 debconf-kde-helper desktop-file-utils dolphin dolphin-plugins enchant-2 fcitx fcitx-frontend-gtk2 fcitx-frontend-gtk3 fcitx-frontend-qt5 fcitx-module-dbus fcitx-module-kimpanel fcitx-module-lua fcitx-module-x11 fcitx-tools fcitx-hangul fcitx-libpinyin fcitx-m17n fcitx-mozc fcitx-sayura fcitx-unikey filelight frameworkintegration gwenview haveged hunspell im-config kwrite kcalc kcharselect kdeadmin kde-config-fcitx kde-config-gtk-style kde-config-gtk-style-preview kdeconnect kdegraphics-thumbnailers kde-spectacle kdf kdialog kfind kget khotkeys kimageformat-plugins kinfocenter kio kio-extras kmag kmenuedit kmix kmousetool kmouth ksshaskpass ktimer kwin-addons kwin-x11 libdbusmenu-glib4 libdbusmenu-gtk3-4 libgail-common libgdk-pixbuf2.0-bin libgtk2.0-bin libgtk-3-bin libkf5baloowidgets-bin libkf5dbusaddons-bin libkf5iconthemes-bin libkf5kdelibs4support5-bin libkf5khtml-bin libkf5parts-plugins libqt5multimedia5-plugins librsvg2-common media-player-info okular okular-extra-backends plasma-browser-integration plasma-calendar-addons plasma-dataengines-addons plasma-discover plasma-integration plasma-runners-addons plasma-widgets-addons print-manager qapt-deb-installer qml-module-org-kde-runnermodel qml-module-org-kde-qqc2desktopstyle qml-module-qtgraphicaleffects qml-module-qt-labs-platform qml-module-qtquick-xmllistmodel qt5-gtk-platformtheme qt5-image-formats-plugins qt5-style-plugins qtspeech5-flite-plugin qtvirtualkeyboard-plugin software-properties-qt sonnet-plugins sweeper systemsettings ubuntu-drivers-common vlc vlc-plugin-access-extra vlc-plugin-notify vlc-plugin-samba vlc-plugin-skins2 vlc-plugin-video-splitter vlc-plugin-visualization xdg-user-dirs xdg-utils firefox transmission-qt && apt-get install --install-recommends -y libreoffice libreoffice-kf5 libreoffice-plasma libreoffice-style-breeze && xdg-settings set default-web-browser firefox.desktop && update-alternatives --set x-www-browser /usr/bin/firefox && if [ "$(dpkg --print-architecture)" = "amd64" ]; then cd /tmp && curl -o google-chrome-stable.deb -fsSL "https://dl.google.com/linux/direct/google-chrome-stable_current_$(dpkg --print-architecture).deb" && apt-get update && apt-get install --no-install-recommends -y ./google-chrome-stable.deb && rm -f google-chrome-stable.deb && sed -i '/^Exec=/ s/$/ --password-store=basic --in-process-gpu/' /usr/share/applications/google-chrome.desktop; fi && apt-get clean && rm -rf /var/lib/apt/lists/* /var/cache/debconf/* /var/log/* /tmp/* /var/tmp/* && MULTI_ARCH=$(dpkg --print-architecture | sed -e 's/arm64/aarch64-linux-gnu/' -e 's/armhf/arm-linux-gnueabihf/' -e 's/riscv64/riscv64-linux-gnu/' -e 's/ppc64el/powerpc64le-linux-gnu/' -e 's/s390x/s390x-linux-gnu/' -e 's/i.*86/i386-linux-gnu/' -e 's/amd64/x86_64-linux-gnu/' -e 's/unknown/x86_64-linux-gnu/') && cp -f /usr/lib/${MULTI_ARCH}/libexec/kf5/start_kdeinit /tmp/ && rm -f /usr/lib/${MULTI_ARCH}/libexec/kf5/start_kdeinit && cp -f /tmp/start_kdeinit /usr/lib/${MULTI_ARCH}/libexec/kf5/start_kdeinit && rm -f /tmp/start_kdeinit && echo "[Daemon]\nAutolock=false\nLockOnResume=false" > /etc/xdg/kscreenlockerrc && echo "[Compositing]\nEnabled=false" > /etc/xdg/kwinrc && echo "[KDE]\nSingleClick=false\n\n[KDE Action Restrictions]\naction/lock_screen=false\nlogout=false\n\n[General]\nBrowserApplication=firefox.desktop" > /etc/xdg/kdeglobals # buildkit
ENV DESKTOP_SESSION=plasma
ENV XDG_SESSION_DESKTOP=KDE
ENV XDG_CURRENT_DESKTOP=KDE
ENV XDG_SESSION_TYPE=x11
ENV KDE_FULL_SESSION=true
ENV KDE_SESSION_VERSION=5
ENV KDE_APPLICATIONS_AS_SCOPE=1
ENV KWIN_COMPOSE=N
ENV KWIN_EFFECTS_FORCE_ANIMATIONS=0
ENV KWIN_EXPLICIT_SYNC=0
ENV KWIN_X11_NO_SYNC_TO_VBLANK=1
ENV SUDO_EDITOR=kwrite
ENV APPIMAGE_EXTRACT_AND_RUN=1
ENV GTK_IM_MODULE=fcitx
ENV QT_IM_MODULE=fcitx
ENV XIM=fcitx
ENV XMODIFIERS=@im=fcitx
ARG WINE_BRANCH=staging
RUN |5 DISTRIB_IMAGE=ubuntu DISTRIB_RELEASE=24.04 DEBIAN_FRONTEND=noninteractive TZ=UTC WINE_BRANCH=staging /usr/bin/fakeroot -- /bin/sh -c if [ "$(dpkg --print-architecture)" = "amd64" ]; then mkdir -pm755 /etc/apt/keyrings && curl -fsSL -o /etc/apt/keyrings/winehq-archive.key "https://dl.winehq.org/wine-builds/winehq.key" && curl -fsSL -o "/etc/apt/sources.list.d/winehq-$(grep '^VERSION_CODENAME=' /etc/os-release | cut -d= -f2 | tr -d '\"').sources" "https://dl.winehq.org/wine-builds/ubuntu/dists/$(grep '^VERSION_CODENAME=' /etc/os-release | cut -d= -f2 | tr -d '\"')/winehq-$(grep '^VERSION_CODENAME=' /etc/os-release | cut -d= -f2 | tr -d '\"').sources" && apt-get update && apt-get install --install-recommends -y winehq-${WINE_BRANCH} && apt-get install --no-install-recommends -y q4wine playonlinux && LUTRIS_VERSION="$(curl -fsSL "https://api.github.com/repos/lutris/lutris/releases/latest" | jq -r '.tag_name' | sed 's/[^0-9\.\-]*//g')" && cd /tmp && curl -o lutris.deb -fsSL "https://github.com/lutris/lutris/releases/download/v${LUTRIS_VERSION}/lutris_${LUTRIS_VERSION}_all.deb" && apt-get install --no-install-recommends -y ./lutris.deb && rm -f lutris.deb && HEROIC_VERSION="$(curl -fsSL "https://api.github.com/repos/Heroic-Games-Launcher/HeroicGamesLauncher/releases/latest" | jq -r '.tag_name' | sed 's/[^0-9\.\-]*//g')" && cd /tmp && curl -o heroic_launcher.deb -fsSL "https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher/releases/download/v${HEROIC_VERSION}/Heroic-${HEROIC_VERSION}-linux-$(dpkg --print-architecture).deb" && apt-get install --no-install-recommends -y ./heroic_launcher.deb && rm -f heroic_launcher.deb && apt-get clean && rm -rf /var/lib/apt/lists/* /var/cache/debconf/* /var/log/* /tmp/* /var/tmp/* && curl -o /usr/bin/winetricks -fsSL "https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks" && chmod -f 755 /usr/bin/winetricks && curl -o /usr/share/bash-completion/completions/winetricks -fsSL "https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks.bash-completion"; fi # buildkit
ARG PIP_BREAK_SYSTEM_PACKAGES=1
RUN |6 DISTRIB_IMAGE=ubuntu DISTRIB_RELEASE=24.04 DEBIAN_FRONTEND=noninteractive TZ=UTC WINE_BRANCH=staging PIP_BREAK_SYSTEM_PACKAGES=1 /usr/bin/fakeroot -- /bin/sh -c apt-get update && apt-get install --no-install-recommends -y python3-pip python3-dev python3-gi python3-setuptools python3-wheel libgcrypt20 libgirepository-1.0-1 glib-networking libglib2.0-0 libgudev-1.0-0 alsa-utils jackd2 libjack-jackd2-0 libpulse0 libopus0 libvpx-dev x264 x265 libdrm2 libegl1 libgl1 libopengl0 libgles1 libgles2 libglvnd0 libglx0 wayland-protocols libwayland-dev libwayland-egl1 wmctrl xsel xdotool x11-utils x11-xkb-utils x11-xserver-utils xserver-xorg-core libx11-xcb1 libxcb-dri3-0 libxdamage1 libxfixes3 libxv1 libxtst6 libxext6 && if [ "$(grep '^VERSION_ID=' /etc/os-release | cut -d= -f2 | tr -d '\"')" \> "20.04" ]; then apt-get install --no-install-recommends -y xcvt libopenh264-dev svt-av1 aom-tools; else apt-get install --no-install-recommends -y mesa-utils-extra; fi && SELKIES_VERSION="$(curl -fsSL "https://api.github.com/repos/selkies-project/selkies/releases/latest" | jq -r '.tag_name' | sed 's/[^0-9\.\-]*//g')" && cd /opt && curl -fsSL "https://github.com/selkies-project/selkies/releases/download/v${SELKIES_VERSION}/gstreamer-selkies_gpl_v${SELKIES_VERSION}_ubuntu$(grep '^VERSION_ID=' /etc/os-release | cut -d= -f2 | tr -d '\"')_$(dpkg --print-architecture).tar.gz" | tar -xzf - && cd /tmp && curl -O -fsSL "https://github.com/selkies-project/selkies/releases/download/v${SELKIES_VERSION}/selkies_gstreamer-${SELKIES_VERSION}-py3-none-any.whl" && pip3 install --no-cache-dir --force-reinstall "selkies_gstreamer-${SELKIES_VERSION}-py3-none-any.whl" "websockets<14.0" && rm -f "selkies_gstreamer-${SELKIES_VERSION}-py3-none-any.whl" && cd /opt && curl -fsSL "https://github.com/selkies-project/selkies/releases/download/v${SELKIES_VERSION}/selkies-gstreamer-web_v${SELKIES_VERSION}.tar.gz" | tar -xzf - && cd /tmp && curl -o selkies-js-interposer.deb -fsSL "https://github.com/selkies-project/selkies/releases/download/v${SELKIES_VERSION}/selkies-js-interposer_v${SELKIES_VERSION}_ubuntu$(grep '^VERSION_ID=' /etc/os-release | cut -d= -f2 | tr -d '\"')_$(dpkg --print-architecture).deb" && apt-get update && apt-get install --no-install-recommends -y ./selkies-js-interposer.deb && rm -f selkies-js-interposer.deb && apt-get clean && rm -rf /var/lib/apt/lists/* /var/cache/debconf/* /var/log/* /tmp/* /var/tmp/* # buildkit
RUN |6 DISTRIB_IMAGE=ubuntu DISTRIB_RELEASE=24.04 DEBIAN_FRONTEND=noninteractive TZ=UTC WINE_BRANCH=staging PIP_BREAK_SYSTEM_PACKAGES=1 /usr/bin/fakeroot -- /bin/sh -c KASMVNC_VERSION="$(curl -fsSL "https://api.github.com/repos/kasmtech/KasmVNC/releases/latest" | jq -r '.tag_name' | sed 's/[^0-9\.\-]*//g')" && cd /tmp && curl -o kasmvncserver.deb -fsSL "https://github.com/kasmtech/KasmVNC/releases/download/v${KASMVNC_VERSION}/kasmvncserver_$(grep '^VERSION_CODENAME=' /etc/os-release | cut -d= -f2 | tr -d '\"')_${KASMVNC_VERSION}_$(dpkg --print-architecture).deb" && apt-get update && apt-get install --no-install-recommends -y ./kasmvncserver.deb libdatetime-perl && rm -f kasmvncserver.deb && RUSTDESK_VERSION="$(curl -fsSL "https://api.github.com/repos/rustdesk/rustdesk/releases/latest" | jq -r '.tag_name' | sed 's/[^0-9\.\-]*//g')" && cd /tmp && curl -o rustdesk.deb -fsSL "https://github.com/rustdesk/rustdesk/releases/download/${RUSTDESK_VERSION}/rustdesk-${RUSTDESK_VERSION}-$(uname -m).deb" && apt-get update && apt-get install --no-install-recommends -y ./rustdesk.deb && rm -f rustdesk.deb && YQ_VERSION="$(curl -fsSL "https://api.github.com/repos/mikefarah/yq/releases/latest" | jq -r '.tag_name' | sed 's/[^0-9\.\-]*//g')" && cd /tmp && curl -o yq -fsSL "https://github.com/mikefarah/yq/releases/download/v${YQ_VERSION}/yq_linux_$(dpkg --print-architecture)" && install ./yq /usr/bin/ && rm -f yq && apt-get clean && rm -rf /var/lib/apt/lists/* /var/cache/debconf/* /var/log/* /tmp/* /var/tmp/* # buildkit
ENV PATH=/usr/local/nvidia/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/rustdesk
ENV LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/usr/lib/rustdesk/lib
COPY --chown=1000:1000 entrypoint.sh /etc/entrypoint.sh # buildkit
RUN |6 DISTRIB_IMAGE=ubuntu DISTRIB_RELEASE=24.04 DEBIAN_FRONTEND=noninteractive TZ=UTC WINE_BRANCH=staging PIP_BREAK_SYSTEM_PACKAGES=1 /usr/bin/fakeroot -- /bin/sh -c chmod -f 755 /etc/entrypoint.sh # buildkit
COPY --chown=1000:1000 selkies-gstreamer-entrypoint.sh /etc/selkies-gstreamer-entrypoint.sh # buildkit
RUN |6 DISTRIB_IMAGE=ubuntu DISTRIB_RELEASE=24.04 DEBIAN_FRONTEND=noninteractive TZ=UTC WINE_BRANCH=staging PIP_BREAK_SYSTEM_PACKAGES=1 /usr/bin/fakeroot -- /bin/sh -c chmod -f 755 /etc/selkies-gstreamer-entrypoint.sh # buildkit
COPY --chown=1000:1000 kasmvnc-entrypoint.sh /etc/kasmvnc-entrypoint.sh # buildkit
RUN |6 DISTRIB_IMAGE=ubuntu DISTRIB_RELEASE=24.04 DEBIAN_FRONTEND=noninteractive TZ=UTC WINE_BRANCH=staging PIP_BREAK_SYSTEM_PACKAGES=1 /usr/bin/fakeroot -- /bin/sh -c chmod -f 755 /etc/kasmvnc-entrypoint.sh # buildkit
COPY --chown=1000:1000 supervisord.conf /etc/supervisord.conf # buildkit
RUN |6 DISTRIB_IMAGE=ubuntu DISTRIB_RELEASE=24.04 DEBIAN_FRONTEND=noninteractive TZ=UTC WINE_BRANCH=staging PIP_BREAK_SYSTEM_PACKAGES=1 /usr/bin/fakeroot -- /bin/sh -c chmod -f 755 /etc/supervisord.conf # buildkit
RUN |6 DISTRIB_IMAGE=ubuntu DISTRIB_RELEASE=24.04 DEBIAN_FRONTEND=noninteractive TZ=UTC WINE_BRANCH=staging PIP_BREAK_SYSTEM_PACKAGES=1 /usr/bin/fakeroot -- /bin/sh -c echo "#!/bin/bash\nset -e\nturnserver --verbose --listening-ip=\"0.0.0.0\" --listening-ip=\"::\" --listening-port=\"\${SELKIES_TURN_PORT:-3478}\" --realm=\"\${TURN_REALM:-example.com}\" --external-ip=\"\${TURN_EXTERNAL_IP:-\$(dig -4 TXT +short @ns1.google.com o-o.myaddr.l.google.com 2>/dev/null | { read output; if [ -z \"\$output\" ] || echo \"\$output\" | grep -q '^;;'; then exit 1; else echo \"\$(echo \$output | sed 's,\\\",,g')\"; fi } || dig -6 TXT +short @ns1.google.com o-o.myaddr.l.google.com 2>/dev/null | { read output; if [ -z \"\$output\" ] || echo \"\$output\" | grep -q '^;;'; then exit 1; else echo \"[\$(echo \$output | sed 's,\\\",,g')]\"; fi } || hostname -I 2>/dev/null | awk '{print \$1; exit}' || echo '127.0.0.1')}\" --min-port=\"\${TURN_MIN_PORT:-49152}\" --max-port=\"\${TURN_MAX_PORT:-65535}\" --channel-lifetime=\"\${TURN_CHANNEL_LIFETIME:--1}\" --lt-cred-mech --user=\"selkies:\${TURN_RANDOM_PASSWORD:-\$(tr -dc 'A-Za-z0-9' < /dev/urandom 2>/dev/null | head -c 24)}\" --no-cli --cli-password=\"\${TURN_RANDOM_PASSWORD:-\$(tr -dc 'A-Za-z0-9' < /dev/urandom 2>/dev/null | head -c 24)}\" --userdb=\"\${XDG_RUNTIME_DIR:-/tmp}/turnserver-turndb\" --pidfile=\"\${XDG_RUNTIME_DIR:-/tmp}/turnserver.pid\" --log-file=\"stdout\" --allow-loopback-peers \${TURN_EXTRA_ARGS} \$@" > /etc/start-turnserver.sh && chmod -f 755 /etc/start-turnserver.sh # buildkit
SHELL [/bin/sh -c]
USER 0
RUN |6 DISTRIB_IMAGE=ubuntu DISTRIB_RELEASE=24.04 DEBIAN_FRONTEND=noninteractive TZ=UTC WINE_BRANCH=staging PIP_BREAK_SYSTEM_PACKAGES=1 /bin/sh -c if [ -d "/usr/libexec/sudo" ]; then SUDO_LIB="/usr/libexec/sudo"; else SUDO_LIB="/usr/lib/sudo"; fi && chown -R -f -h --no-preserve-root root:root /usr/bin/sudo-root /etc/sudo.conf /etc/sudoers /etc/sudoers.d /etc/sudo_logsrvd.conf "${SUDO_LIB}" || echo 'Failed to provide root permissions in some paths relevant to sudo' && chmod -f 4755 /usr/bin/sudo-root || echo 'Failed to set chmod setuid for root' # buildkit
USER 1000
ENV PIPEWIRE_LATENCY=128/48000
ENV XDG_RUNTIME_DIR=/tmp/runtime-ubuntu
ENV PIPEWIRE_RUNTIME_DIR=/tmp/runtime-ubuntu
ENV PULSE_RUNTIME_PATH=/tmp/runtime-ubuntu/pulse
ENV PULSE_SERVER=unix:/tmp/runtime-ubuntu/pulse/native
ENV DBUS_SYSTEM_BUS_ADDRESS=unix:path=/tmp/runtime-ubuntu/dbus-system-bus
USER 1000
ENV SHELL=/bin/bash
ENV USER=ubuntu
ENV HOME=/home/ubuntu
WORKDIR /home/ubuntu
EXPOSE [8080/tcp]
ENTRYPOINT ["/usr/bin/supervisord"]
ARG USERNAME=will
ARG USER_UID=1000
ARG USER_GID=1000
ARG NIXOS_CONFIG_REF=master
USER root
RUN |4 USERNAME=will USER_UID=1000 USER_GID=1000 NIXOS_CONFIG_REF=master /bin/sh -c apt-get update && apt-get install -y xz-utils locales libva2 libva-drm2 libva-x11-2 vainfo mesa-va-drivers mesa-vulkan-drivers mesa-utils && rm -rf /var/lib/apt/lists/* && locale-gen en_US.UTF-8 # buildkit
ENV LANG=en_US.UTF-8
ENV LC_ALL=en_US.UTF-8
RUN |4 USERNAME=will USER_UID=1000 USER_GID=1000 NIXOS_CONFIG_REF=master /bin/sh -c set -e && if ! getent group ${USER_GID} >/dev/null; then groupadd --gid ${USER_GID} ${USERNAME}; fi && if ! id -u ${USERNAME} >/dev/null 2>&1; then if id -u ${USER_UID} >/dev/null 2>&1; then existing_user=$(id -nu ${USER_UID}); usermod -l ${USERNAME} -d /home/${USERNAME} -m "$existing_user"; else useradd --uid ${USER_UID} --gid ${USER_GID} -m -s /bin/bash ${USERNAME}; fi; fi && echo "${USERNAME} ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && usermod -aG video,render ${USERNAME} 2>/dev/null || true && mkdir -p /home/${USERNAME}/.local/bin && chown -R ${USER_UID}:${USER_GID} /home/${USERNAME} # buildkit
RUN |4 USERNAME=will USER_UID=1000 USER_GID=1000 NIXOS_CONFIG_REF=master /bin/sh -c mkdir -p /nix && chown -R ${USER_UID}:${USER_GID} /nix # buildkit
USER will
WORKDIR /home/will
ENV USER=will
ENV HOME=/home/will
COPY --chown=will:will shared/install-nix.sh /tmp/install-nix.sh # buildkit
RUN |4 USERNAME=will USER_UID=1000 USER_GID=1000 NIXOS_CONFIG_REF=master /bin/sh -c chmod +x /tmp/install-nix.sh && /tmp/install-nix.sh # buildkit
RUN |4 USERNAME=will USER_UID=1000 USER_GID=1000 NIXOS_CONFIG_REF=master /bin/sh -c if [ -f /run/secrets/repo_user ] && [ -f /run/secrets/repo_pass ]; then REPO_USER=$(cat /run/secrets/repo_user) && REPO_PASS=$(cat /run/secrets/repo_pass) && git clone --depth 1 -b ${NIXOS_CONFIG_REF} "https://${REPO_USER}:${REPO_PASS}@git.happyvertical.com/will/nixos-config.git" /home/${USERNAME}/.nixos-config; else git clone --depth 1 -b ${NIXOS_CONFIG_REF} https://git.happyvertical.com/will/nixos-config.git /home/${USERNAME}/.nixos-config; fi # buildkit
COPY --chown=will:will shared/setup-home-manager.sh /tmp/setup-home-manager.sh # buildkit
RUN |4 USERNAME=will USER_UID=1000 USER_GID=1000 NIXOS_CONFIG_REF=master /bin/sh -c chmod +x /tmp/setup-home-manager.sh # buildkit
RUN |4 USERNAME=will USER_UID=1000 USER_GID=1000 NIXOS_CONFIG_REF=master /bin/sh -c . ~/.nix-profile/etc/profile.d/nix.sh && /tmp/setup-home-manager.sh desktop-amd # buildkit
USER root
RUN |4 USERNAME=will USER_UID=1000 USER_GID=1000 NIXOS_CONFIG_REF=master /bin/sh -c usermod -s /home/${USERNAME}/.nix-profile/bin/zsh ${USERNAME} # buildkit
ENV SHELL=/home/will/.nix-profile/bin/zsh
COPY desktop-amd/entrypoint.sh /entrypoint-wrapper.sh # buildkit
RUN |4 USERNAME=will USER_UID=1000 USER_GID=1000 NIXOS_CONFIG_REF=master /bin/sh -c chmod +x /entrypoint-wrapper.sh # buildkit
ENV USER=will
ENV HOME=/home/will
ENV SELKIES_ENCODER=vah264enc
ENV SELKIES_VIDEO_BITRATE=8000
ENV SELKIES_FRAMERATE=60
ENV LIBVA_DRIVER_NAME=radeonsi
ENV DISPLAY_SIZEW=1920
ENV DISPLAY_SIZEH=1080
ENV DISPLAY_REFRESH=60
ENV DISPLAY_DPI=96
ENV DISPLAY_CDEPTH=24
ENTRYPOINT ["/entrypoint-wrapper.sh"]

Labels

Key Value
maintainer https://github.com/ehfd,https://github.com/danisla
org.opencontainers.image.created 2025-12-12T15:47:28.957Z
org.opencontainers.image.description
org.opencontainers.image.licenses
org.opencontainers.image.ref.name ubuntu
org.opencontainers.image.revision c3fde78392fa69de624d1e15b2433ca3c06ca811
org.opencontainers.image.source https://git.happyvertical.com/will/nixos-config
org.opencontainers.image.title nixos-config
org.opencontainers.image.url https://git.happyvertical.com/will/nixos-config
org.opencontainers.image.version latest
Details
Container
2025-12-12 15:47:31 +00:00
0
OCI / Docker
linux/amd64
5.3 GiB
Versions (5) View all
latest 2025-12-12
8c0f0f3 2025-12-12
buildcache 2025-12-12
c3fde78 2025-12-12
2ba871b 2025-12-12