You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
User-context installers, drop PATH symlinks and systemd / chown plumbing
Everything that targets a single user (nvm, claude-code, rtk, web-shell
on base; cmake, sccache on cpp) now runs as `coder` from a user-context
loop in the Dockerfile. Upstream installers write into $HOME directly —
no root+chown dance, no /usr/local symlinks into user-space.
Script-by-script changes:
scripts/nvm/install.sh
- Install to $HOME/.nvm via upstream (no more /usr/local/share/nvm).
- Let the upstream installer append its loader snippet to ~/.profile
(PROFILE=$HOME/.profile).
- Dropped /etc/profile.d/nvm.sh, /etc/bash.bashrc and /etc/zsh/zshrc
hooks, and all chown/chmod plumbing.
scripts/claude-code/install.sh (earlier commit, context here)
- Runs as user, appends a runtime-idempotent PATH hook to ~/.profile
for $HOME/.local/bin.
scripts/rtk/install.sh
- Use plain upstream install, which lands the binary in $HOME/.local/bin.
- post-create.sh moves from /usr/local/share/rtk to $HOME/.local/share/rtk.
scripts/sccache/install.sh
- Pipe curl | tar with --strip-components=1 + path filter to extract
just the binary straight into $HOME/.local/bin. No mktemp, no trap.
scripts/cmake/install.sh (earlier commit, context here)
- Merge tarball into $HOME/.local with --strip-components=1.
scripts/web-shell/install.sh
- Drop the systemd unit + /etc/profile.d fallback + INIT_COMM branch.
- Drop the $HOME/.cache chown repair.
- Drop the curl+tmpfile dance — npm install -g accepts the GitHub
release tarball URL directly.
scripts/llvm/install.sh, context-mode, home-persist
- Drop the per-script `if ! command -v X; then apt-get install X`
fallbacks. curl / tar / git / jq / ca-certificates are now
explicitly in the base image's main apt install.
src/base/Dockerfile
- Add ca-certificates and curl to the main apt install.
- Root loop: context-mode, home-persist only.
- User-context loop: nvm, claude-code, rtk, web-shell.
src/cpp/Dockerfile
- Root loop: just llvm.
- User-context loop: cmake + sccache.
main.tf
- coder_script.web_shell now sources $HOME/.nvm/nvm.sh + nvm use
default so the backgrounded web-shell binary resolves on PATH.
- Replace the systemd-based web-shell supervision with a plain
coder_script: `nohup web-shell … &`, no while-loop, no pgrep
guard — matches coder/code-server and coder/jetbrains module
patterns.
- Lifecycle_init references $HOME/.local/share/rtk/post-create.sh.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments