diff --git a/Dockerfile b/Dockerfile index 928690e..97407e1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -172,6 +172,9 @@ RUN printf '%s\n' \ texlive-lang-cjk \ texlive-lang-chinese \ texlive-lang-japanese \ + fonts-cmu \ + fonts-stix \ + fonts-texgyre \ poppler-utils \ qpdf \ ghostscript \ @@ -303,6 +306,15 @@ RUN curl -LsSf https://astral.sh/uv/install.sh | sh \ pyarrow \ tabulate \ numpy \ + # Data science / ML / viz + jupyterlab \ + notebook \ + ipykernel \ + matplotlib \ + seaborn \ + scipy \ + pillow \ + imageio \ ruff \ && PIPBIN="$("${PYBIN}" -c 'import os, sysconfig; print(os.path.join(sysconfig.get_path("scripts"), "pip"))')" \ && ln -sf "${PIPBIN}" /usr/local/bin/pip3 \ diff --git a/README.md b/README.md index 674dda0..1e09ee5 100644 --- a/README.md +++ b/README.md @@ -57,8 +57,9 @@ This image includes a comprehensive suite of tools categorized for agentic tasks | **Text & Data Utils** | `jq`, `yq`, `rg` (ripgrep), `fd`, `mlr` (miller), `csvkit`, `tmux` | | **Build Essentials** | `gcc`, `g++`, `clang`, `cmake`, `ninja`, `make`, `gdb`, `lldb`, `strace` | | **Compression** | `zip`, `unzip`, `7z`, `tar`, `zstd`, `unrar` | -| **Fonts & I18n** | Noto CJK (Chinese/Japanese/Korean), Noto Color Emoji, Liberation, DejaVu | +| **Fonts & I18n** | Noto CJK (Chinese/Japanese/Korean), Noto Color Emoji, Liberation, DejaVu, CMU, STIX, TeX Gyre | | **LaTeX & Academic** | `latexmk`, `biber`, `chktex`, `lualatex`, `xelatex`, `pdflatex`, mermaid-cli (`mmdc`) | +| **Data Science & Viz** | JupyterLab, Notebook, matplotlib, seaborn, scipy, pillow, imageio | ## 🤖 Hermes Agent Configuration diff --git a/verify-runtime.sh b/verify-runtime.sh index 5b11b5d..0aafbe4 100644 --- a/verify-runtime.sh +++ b/verify-runtime.sh @@ -6,6 +6,11 @@ test "$(cat /etc/timezone)" = "Asia/Shanghai" date locale | grep 'LANG=en_US.UTF-8' +echo "== academic fonts ==" +for fp in /usr/share/fonts/truetype/cmu /usr/share/fonts/truetype/stix /usr/share/fonts/truetype/tex-gyre; do + test -d "$fp" && printf '%-20s %s\n' "$(basename $fp)" "installed" +done + echo "== base commands ==" for cmd in printenv envsubst timeout flock stdbuf script git git-lfs gh rg aria2c tmux rsync 7z zip unzip unrar rclone ffmpeg ffprobe yt-dlp convert identify exiftool oxipng duckdb psql mysql redis-cli sqlite3 libreoffice pandoc jq yq fd officecli mmdc; do command -v "$cmd" >/dev/null @@ -58,6 +63,14 @@ modules = [ "pyarrow", "tabulate", "numpy", + "jupyterlab", + "notebook", + "ipykernel", + "matplotlib", + "seaborn", + "scipy", + "PIL", + "imageio", ] for module in modules: __import__(module)