96 lines
3.1 KiB
Text
96 lines
3.1 KiB
Text
FROM python:3.12-slim
|
|
|
|
# 1. Install System Tools
|
|
# Added pkg-config and libssl-dev (Essential for Rust compilation)
|
|
RUN apt-get update && apt-get install -y \
|
|
git curl build-essential unzip sudo \
|
|
ffmpeg jq zsh pkg-config libssl-dev wget \
|
|
default-jdk-headless just
|
|
# install dotnet SDK
|
|
RUN wget https://packages.microsoft.com/config/debian/13/packages-microsoft-prod.deb -O packages-microsoft-prod.deb && \
|
|
sudo dpkg -i packages-microsoft-prod.deb && \
|
|
rm packages-microsoft-prod.deb
|
|
RUN sudo apt-get update && \
|
|
sudo apt-get install -y dotnet-sdk-10.0 && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
#1a GIT store creds
|
|
RUN git config --global credential.helper store
|
|
|
|
# 2. Install Starship & Aliases
|
|
COPY starship.toml /root/.config/starship.toml
|
|
RUN curl -sS https://starship.rs/install.sh | sh -s -- -y
|
|
RUN echo 'eval "$(starship init zsh)"' >> /root/.zshrc
|
|
|
|
RUN echo 'alias ll="ls -al"' >> /root/.zshrc
|
|
|
|
# 3. Install 'uv' (Python)
|
|
COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv
|
|
|
|
# 4. Install Bun (JS/TS)
|
|
ENV BUN_INSTALL="/root/.bun"
|
|
ENV PATH="$BUN_INSTALL/bin:$PATH"
|
|
RUN curl -fsSL https://bun.sh/install | bash
|
|
|
|
# use bun for node, npx
|
|
RUN ( \
|
|
cd /usr/local/bin && \
|
|
echo '#!/bin/sh' %3E npx && echo 'exec bunx "$@"' >> npx && chmod +x npx && \
|
|
echo '#!/bin/sh' %3E node && echo 'exec bun "$@"' >> node && chmod +x node \
|
|
)
|
|
|
|
|
|
# --- NEW SECTION: RUST SETUP ---
|
|
# 5. Install Rust (Official Script)
|
|
# Installs Cargo, Rustc, Rustfmt, etc.
|
|
ENV RUSTUP_HOME=/root/.rustup
|
|
ENV CARGO_HOME=/root/.cargo
|
|
ENV PATH="$CARGO_HOME/bin:$PATH"
|
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile default
|
|
|
|
|
|
|
|
# install https://agent-browser.dev
|
|
RUN cargo install agent-browser && \
|
|
agent-browser install # Download Chrome (first time)
|
|
|
|
# --- NEW SECTION: GO SETUP ---
|
|
# 6. Install Go (Latest Stable)
|
|
|
|
ARG GO_VER=1.26.1
|
|
ARG ARCH=amd64
|
|
RUN curl -OL https://golang.org/dl/go${GO_VER}.linux-${ARCH}.tar.gz && \
|
|
tar -C /usr/local -xzf go${GO_VER}.linux-${ARCH}.tar.gz && \
|
|
rm go${GO_VER}.linux-${ARCH}.tar.gz
|
|
ENV PATH="/usr/local/go/bin:$PATH"
|
|
|
|
# tinygo Download the latest binary tarball
|
|
ARG TGO_VER=0.40.1
|
|
RUN curl -LO https://github.com/tinygo-org/tinygo/releases/download/v${TGO_VER}/tinygo_${TGO_VER}_amd64.deb && \
|
|
dpkg -i tinygo_${TGO_VER}_amd64.deb
|
|
# Add TinyGo to your PATH (add to ~/.bashrc or ~/.zshrc for persistence)
|
|
ENV PATH="$PATH:/usr/local/tinygo/bin"
|
|
|
|
# 6a basex https://files.basex.org/releases/12.2/BaseX122.zip
|
|
ARG BASEX_VER=12.2/BaseX122.zip
|
|
RUN curl -fsSL https://files.basex.org/releases/${BASEX_VER} -o temp.zip || { echo "Download failed"; exit 1; } && \
|
|
unzip temp.zip -d /usr/local || { echo "Extraction failed"; rm temp.zip; exit 1; } && \
|
|
rm temp.zip
|
|
ENV PATH="/usr/local/basex/bin:$PATH"
|
|
|
|
# 7. Install OpenCode CLI
|
|
RUN curl -fsSL https://opencode.ai/install | bash
|
|
ENV PATH="/root/.opencode/bin:$PATH"
|
|
|
|
# 8. Install Oh-My-OpenCode
|
|
#RUN bunx oh-my-opencode@latest install --no-tui \
|
|
# --claude=no --gemini=no --copilot=no
|
|
|
|
# 9. CONFIG PART 1: Hardware/Providers (opencode.json)
|
|
# Maps your local ports to providers.
|
|
|
|
|
|
#USER 1000:1000
|
|
WORKDIR /workspace
|
|
ENV SHELL=/bin/zsh
|
|
CMD ["/bin/zsh"]
|