| ARG RELEASE |
| ARG LAUNCHPAD_BUILD_ARCH |
| LABEL org.opencontainers.image.version=24.04 |
| ADD file:cb9335ce6f27399c2b17787739d6675502767c53e0335ded2a5f0d003d996650 in / |
| CMD ["/bin/bash"] |
| ARG UBUNTU_CODENAME=noble |
| ARG VERSION_CODENAME=noble |
| ARG ARCH |
| ARG CARGO_DENY_VERSION=0.20.2 |
| SHELL [bash -o pipefail -c] |
| ENV DEBIAN_FRONTEND=noninteractive |
| RUN |4 UBUNTU_CODENAME=noble VERSION_CODENAME=noble ARCH= CARGO_DENY_VERSION=0.20.2 bash -o pipefail -c apt-get update && apt-get install -y --no-install-recommends jq tmux git curl wget gnupg gpgv ca-certificates build-essential gcc g++ make unzip zip tree ncdu openssh-client rsync gh htop procps file sudo ca-certificates curl gcc && rm -rf /var/lib/apt/lists/* # buildkit |
| RUN |4 UBUNTU_CODENAME=noble VERSION_CODENAME=noble ARCH= CARGO_DENY_VERSION=0.20.2 bash -o pipefail -c install -m 0755 -d /etc/apt/keyrings && curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc && chmod a+r /etc/apt/keyrings/docker.asc # buildkit |
| COPY <<EOF /etc/apt/sources.list.d/docker.sources # buildkit |
| RUN |4 UBUNTU_CODENAME=noble VERSION_CODENAME=noble ARCH= CARGO_DENY_VERSION=0.20.2 bash -o pipefail -c apt-get update && apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin && rm -rf /var/lib/apt/lists/* # buildkit |
| ENV UV_PROJECT_ENVIRONMENT=/opt/venv |
| COPY /uv /uvx /usr/local/bin/ # buildkit |
| RUN |4 UBUNTU_CODENAME=noble VERSION_CODENAME=noble ARCH= CARGO_DENY_VERSION=0.20.2 bash -o pipefail -c groupadd -g 1001 hermes && groupadd -g 988 dsocket && useradd -m -u 1001 -g 1001 -s /bin/bash hermes && usermod -aG dsocket hermes && usermod -aG dsocket ubuntu && echo "hermes ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/hermes && echo "ubuntu ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/ubuntu && chmod 440 /etc/sudoers.d/{hermes,ubuntu} # buildkit |
| RUN |4 UBUNTU_CODENAME=noble VERSION_CODENAME=noble ARCH= CARGO_DENY_VERSION=0.20.2 bash -o pipefail -c curl -sSL https://github.com/rust-lang/rust-analyzer/releases/latest/download/rust-analyzer-x86_64-unknown-linux-gnu -o /usr/local/bin/rust-analyzer && chmod +x /usr/local/bin/rust-analyzer # buildkit |
| RUN |4 UBUNTU_CODENAME=noble VERSION_CODENAME=noble ARCH= CARGO_DENY_VERSION=0.20.2 bash -o pipefail -c curl -sSL https://github.com/LuaLS/lua-language-server/releases/download/3.18.2/lua-language-server-3.18.2-linux-x64.tar.gz -o lua-ls.tar.gz && tar -xzf lua-ls.tar.gz && mkdir -p /usr/local/lib/lua-language-server && mv bin locale LICENSE debugger.lua changelog.md /usr/local/lib/lua-language-server && ln -sf /usr/local/lib/lua-language-server/bin/lua-language-server /usr/local/bin/lua-language-server && rm -rf lua-ls.tar.gz lua-language-server # buildkit |
| ENV HOME=/home/hermes |
| RUN |4 UBUNTU_CODENAME=noble VERSION_CODENAME=noble ARCH= CARGO_DENY_VERSION=0.20.2 bash -o pipefail -c curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile complete && rm -rf "${HOME}/.cargo/install" "${HOME}/.rustup/toolchains/*/lib/rustlib/uninstalled" # buildkit |
| ENV PATH=/home/hermes/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| RUN |4 UBUNTU_CODENAME=noble VERSION_CODENAME=noble ARCH= CARGO_DENY_VERSION=0.20.2 bash -o pipefail -c curl -fsSL "https://github.com/EmbarkStudios/cargo-deny/releases/download/${CARGO_DENY_VERSION}/cargo-deny-${CARGO_DENY_VERSION}-x86_64-unknown-linux-musl.tar.gz" -o /tmp/cargo-deny.tgz && tar -xzf /tmp/cargo-deny.tgz -C /tmp && install -m 0755 /tmp/cargo-deny-*/cargo-deny /usr/local/bin/cargo-deny && rm -rf /tmp/cargo-deny* && cargo-deny --version # buildkit |
| WORKDIR /home/hermes |
| ENV BASH_ENV=/home/hermes/.bash_env |
| RUN |4 UBUNTU_CODENAME=noble VERSION_CODENAME=noble ARCH= CARGO_DENY_VERSION=0.20.2 bash -o pipefail -c touch "${BASH_ENV}" # buildkit |
| RUN |4 UBUNTU_CODENAME=noble VERSION_CODENAME=noble ARCH= CARGO_DENY_VERSION=0.20.2 bash -o pipefail -c echo '. "${BASH_ENV}"' >> ~/.bashrc # buildkit |
| ENV NODE_VERSION=24 |
| RUN |4 UBUNTU_CODENAME=noble VERSION_CODENAME=noble ARCH= CARGO_DENY_VERSION=0.20.2 bash -o pipefail -c curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.6/install.sh | PROFILE="${BASH_ENV}" bash # buildkit |
| RUN |4 UBUNTU_CODENAME=noble VERSION_CODENAME=noble ARCH= CARGO_DENY_VERSION=0.20.2 bash -o pipefail -c echo node > "${HOME}/.nvmrc" # buildkit |
| RUN |4 UBUNTU_CODENAME=noble VERSION_CODENAME=noble ARCH= CARGO_DENY_VERSION=0.20.2 bash -o pipefail -c nvm install "${NODE_VERSION}" # buildkit |
| RUN |4 UBUNTU_CODENAME=noble VERSION_CODENAME=noble ARCH= CARGO_DENY_VERSION=0.20.2 bash -o pipefail -c npm install -g --quiet bash-language-server && rm -rf "${HOME}/.npm" # buildkit |
| RUN |4 UBUNTU_CODENAME=noble VERSION_CODENAME=noble ARCH= CARGO_DENY_VERSION=0.20.2 bash -o pipefail -c npm install -g --quiet ts-language-server && rm -rf "${HOME}/.npm" # buildkit |
| RUN |4 UBUNTU_CODENAME=noble VERSION_CODENAME=noble ARCH= CARGO_DENY_VERSION=0.20.2 bash -o pipefail -c uv python install 3.12 && sudo mkdir -p /opt/venv && sudo chown hermes:hermes /opt/venv; uv venv --seed /opt/venv # buildkit |
| ENV PATH=/opt/venv/bin:/home/hermes/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| RUN |4 UBUNTU_CODENAME=noble VERSION_CODENAME=noble ARCH= CARGO_DENY_VERSION=0.20.2 bash -o pipefail -c pip install --no-cache-dir basedpyright ruff ruff-lsp && rm -rf "${HOME}/.cache/pip" # buildkit |
| RUN |4 UBUNTU_CODENAME=noble VERSION_CODENAME=noble ARCH= CARGO_DENY_VERSION=0.20.2 bash -o pipefail -c pip install --no-cache-dir pyyaml poetry httpx Pillow playwright && rm -rf "${HOME}/.cache/pip" # buildkit |
| RUN |4 UBUNTU_CODENAME=noble VERSION_CODENAME=noble ARCH= CARGO_DENY_VERSION=0.20.2 bash -o pipefail -c curl -fsSL https://bun.com/install | bash # buildkit |
| RUN |4 UBUNTU_CODENAME=noble VERSION_CODENAME=noble ARCH= CARGO_DENY_VERSION=0.20.2 bash -o pipefail -c npm install -g --quiet typescript npm-check-updates opencode-ai@latest oh-my-openagent@latest playwright@latest && rm -rf "${HOME}/.npm" # buildkit |
| RUN |4 UBUNTU_CODENAME=noble VERSION_CODENAME=noble ARCH= CARGO_DENY_VERSION=0.20.2 bash -o pipefail -c ln -sfn /usr/bin /bin # buildkit |
| RUN |4 UBUNTU_CODENAME=noble VERSION_CODENAME=noble ARCH= CARGO_DENY_VERSION=0.20.2 bash -o pipefail -c apt-get update && apt-get install -y --no-install-recommends gnupg gpgv ca-certificates && playwright install --with-deps chromium && rm -rf /var/lib/apt/lists/* # buildkit |
| WORKDIR /workspace |
| RUN |4 UBUNTU_CODENAME=noble VERSION_CODENAME=noble ARCH= CARGO_DENY_VERSION=0.20.2 bash -o pipefail -c ln -sf /opt/data/bin/cryptile /usr/local/bin/cryptile # buildkit |