FROM git.bussmann-os.de/Software-Entwicklung/docker_images/base:latest #FROM gen3-base LABEL title="Bußmann IT Development Image" LABEL description="DEV Container for Bußmann IT" LABEL authors="manuel.bussmann@it-bussmann.de" LABEL vendor="IT Bußmann" LABEL version="0.1" SHELL ["/bin/bash", "-c"] # Set Language ENV LANG=C.UTF-8 ENV DEBIAN_FRONTEND=noninteractive # Install Essentials RUN apt update && apt install -y \ build-essential \ gdb \ rsync \ doxygen \ graphviz \ doxyqml \ cmake \ ninja-build \ curl \ zip \ python3 \ python3-html5lib \ python3-jinja2 \ python3-git \ openssl \ libssl-dev \ git \ ssh \ sudo \ dos2unix \ perl \ libcups2-dev \ libboost-all-dev \ libgmock-dev \ libgtest-dev \ libgl1-mesa-dev \ libvulkan-dev \ libxkbcommon-dev \ libglib2.0-dev \ libwayland-dev \ protobuf-compiler \ libprotoc-dev \ libpq-dev \ wget \ nano \ vim \ # Install libs for Qt modules libdrm-dev \ libinput-dev \ libpulse-dev \ bison \ flex \ libnss3-dev \ libdbus-1-dev \ libgbm-dev \ libwebp-dev \ libjpeg-dev \ libicu-dev \ libhunspell-dev \ libva-dev \ libavcodec-dev \ libavformat-dev \ libzstd-dev \ libsystemd-dev \ libxrandr-dev \ # Install x11-libs libfontconfig1-dev \ libfreetype6-dev \ libx11-dev \ libx11-xcb-dev \ libxext-dev \ libxfixes-dev \ libxi-dev \ libxrender-dev \ libxcb1-dev \ libxcb-cursor-dev \ libxcb-glx0-dev \ libxcb-keysyms1-dev \ libxcb-image0-dev \ libxcb-shm0-dev \ libxcb-icccm4-dev \ libxcb-sync-dev \ libxcb-xfixes0-dev \ libxcb-shape0-dev \ libxcb-randr0-dev \ libxcb-render-util0-dev \ libxcb-util-dev \ libxcb-xinerama0-dev \ libxcb-xkb-dev \ libxkbcommon-dev \ libxkbcommon-x11-dev \ libxcb-xinput-dev \ libxcomposite-dev \ libxcursor-dev \ libxshmfence-dev \ libxtst-dev \ libxkbfile-dev \ # Install useful analysis tools shellcheck \ valgrind \ # Utils gcovr \ graphviz \ plantuml \ clang-tidy-18 \ clang-format-18 \ clang-tools-18 \ clangd-18 \ llvm-18-dev \ lld-18 \ lldb-18 \ llvm-18-tools \ libomp-18-dev \ libc++-18-dev \ libc++abi-18-dev \ libclang-common-18-dev \ libclang-18-dev \ libclang-cpp18-dev \ libunwind-18-dev \ zsh # Create the user RUN usermod -l dev ubuntu \ && usermod -d /home/dev -s /bin/bash -m dev \ && groupmod -n dev ubuntu \ && echo dev ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/dev \ && chmod 0440 /etc/sudoers.d/dev # Create aliases for ls RUN echo "alias ll='ls -l'" >> /home/dev/.bashrc \ && echo "alias la='ls -A'" >> /home/dev/.bashrc \ && echo "alias l='ls -CF'" >> /home/dev/.bashrc # Install Mireo Async MQTT5 header RUN cd /root \ && git clone https://github.com/mireo/async-mqtt5.git \ && mv /root/async-mqtt5/include/* /usr/include/ \ && rm -rf async-mqtt5/ # Install oh-my-zsh and copy all zsh configuration files to the user's home directory RUN sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended && \ cp -r /root/.oh-my-zsh /home/dev/ && \ cp /root/.zshrc /home/dev/ && \ chown -R dev:dev /home/dev/.oh-my-zsh /home/dev/.zshrc # Enable the following plugins in the .zshrc: git, ubuntu, compleat, aliases, colored-man-pages, cp, dirhistory, fzf, git-extras, brew, dotnet, sudo, zsh-interactive-cd, command-not-found, vscode, ssh # Disable update checks in the .zshrc # Modify .zshrc to use "tjkirch" as the default theme # Install and enable the zsh-motd plugin RUN sed -i 's/plugins=(git)/plugins=(git ubuntu compleat aliases colored-man-pages cp dirhistory fzf git-extras brew dotnet sudo zsh-interactive-cd command-not-found vscode ssh zsh-motd)/' /home/dev/.zshrc \ && sed -i 's/# DISABLE_AUTO_UPDATE="true"/DISABLE_AUTO_UPDATE="true"/' /home/dev/.zshrc \ && sed -i 's/ZSH_THEME="robbyrussell"/ZSH_THEME="tjkirch"/' /home/dev/.zshrc \ && zsh -c "git clone https://github.com/Kallahan23/zsh-motd /home/dev/.oh-my-zsh/custom/plugins/zsh-motd" # Use Clang to compile Qt ENV CXX=/usr/bin/clang++-18 ENV CC=/usr/bin/clang-18 RUN ln -s /usr/bin/clang++-18 /usr/bin/clang++ \ && ln -s /usr/bin/clang-18 /usr/bin/clang \ && ln -s /usr/bin/clang-cpp-18 /usr/bin/clang-cpp \ && ln -s /usr/bin/clangd-18 /usr/bin/clangd \ && ln -s /usr/bin/clang-format-18 /usr/bin/clang-format \ && ln -s /usr/bin/llvm-config-18 /usr/bin/llvm-config ADD docker/make_llvm_pkgconfig.sh /root/make_llvm_pkgconfig.sh RUN /root/make_llvm_pkgconfig.sh > /usr/lib/x86_64-linux-gnu/pkgconfig/libunwind.pc \ && rm -rf /root/make_llvm_pkgconfig.sh