My aggregated monorepo of OCaml code, automaintained
1{
2 "name": "Claude Code OCaml Sandbox",
3 "image": "ghcr.io/avsm/claude-ocaml-devcontainer:main",
4 "runArgs": [
5 "--cap-add=NET_ADMIN",
6 "--cap-add=NET_RAW"
7 ],
8 "customizations": {
9 "vscode": {
10 "extensions": [
11 "anthropic.claude-code",
12 "dbaeumer.vscode-eslint",
13 "esbenp.prettier-vscode",
14 "eamodio.gitlens",
15 "ocamllabs.ocaml-platform"
16 ],
17 "settings": {
18 "editor.formatOnSave": true,
19 "editor.defaultFormatter": "esbenp.prettier-vscode",
20 "editor.codeActionsOnSave": {
21 "source.fixAll.eslint": "explicit"
22 },
23 "terminal.integrated.defaultProfile.linux": "zsh",
24 "terminal.integrated.profiles.linux": {
25 "bash": {
26 "path": "bash",
27 "icon": "terminal-bash"
28 },
29 "zsh": {
30 "path": "zsh"
31 }
32 }
33 }
34 }
35 },
36 "remoteUser": "node",
37 "mounts": [
38 "source=claude-code-bashhistory-${devcontainerId},target=/commandhistory,type=volume",
39 "source=${localEnv:HOME}/.claude,target=/home/node/.claude,type=bind",
40 "source=${localEnv:HOME}/.config/poe,target=/home/node/.config/poe,type=bind",
41 "source=${localEnv:HOME}/.ssh,target=/home/node/.ssh,type=bind,readonly",
42 "source=${localEnv:HOME}/.gitconfig,target=/home/node/.gitconfig,type=bind,readonly"
43 ],
44 "containerEnv": {
45 "NODE_OPTIONS": "--max-old-space-size=4096",
46 "CLAUDE_CONFIG_DIR": "/home/node/.claude",
47 "POWERLEVEL9K_DISABLE_GITSTATUS": "true"
48 },
49 "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=delegated",
50 "workspaceFolder": "/workspace",
51 "postCreateCommand": "sudo /usr/local/bin/init-firewall.sh && opam repo add -y aoah git+https://tangled.org/anil.recoil.org/aoah-opam-repo && opam install -y monopam && cd /workspace && opam install -y .",
52 "waitFor": "postStartCommand"
53}