Skip to content

Commit 77ac80c

Browse files
Add default JupyterLab kernel from venv
1 parent c7c8209 commit 77ac80c

1 file changed

Lines changed: 64 additions & 1 deletion

File tree

workspaces/Developer/main.tf

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -987,6 +987,69 @@ resource "coder_script" "setup_pipx" {
987987
start_blocks_login = false
988988
}
989989

990+
# Script para crear venv y kernel por defecto de JupyterLab
991+
resource "coder_script" "setup_jupyter_kernel" {
992+
agent_id = coder_agent.main.id
993+
display_name = "Setup Jupyter kernel"
994+
icon = "/icon/folder.svg"
995+
script = <<-EOT
996+
#!/bin/bash
997+
set -e
998+
999+
VENV_DIR="$HOME/.venvs/jupyter"
1000+
KERNEL_NAME="coder-py"
1001+
DISPLAY_NAME="Python (coder)"
1002+
1003+
if [ ! -d "$VENV_DIR" ]; then
1004+
python3 -m venv "$VENV_DIR"
1005+
fi
1006+
1007+
"$VENV_DIR/bin/python" -m pip install --upgrade pip
1008+
"$VENV_DIR/bin/python" -m pip install --upgrade ipykernel
1009+
"$VENV_DIR/bin/python" -m ipykernel install --user --name "$KERNEL_NAME" --display-name "$DISPLAY_NAME"
1010+
1011+
python3 - <<'PY'
1012+
from pathlib import Path
1013+
1014+
config = Path.home() / ".jupyter" / "jupyter_server_config.py"
1015+
config.parent.mkdir(parents=True, exist_ok=True)
1016+
1017+
block = """# >>> coder-managed-kernel
1018+
try:
1019+
c
1020+
except NameError:
1021+
c = get_config()
1022+
1023+
c.MappingKernelManager.default_kernel_name = "coder-py"
1024+
try:
1025+
c.MultiKernelManager.default_kernel_name = "coder-py"
1026+
except Exception:
1027+
pass
1028+
# <<< coder-managed-kernel
1029+
"""
1030+
1031+
text = config.read_text() if config.exists() else ""
1032+
start = text.find("# >>> coder-managed-kernel")
1033+
end = text.find("# <<< coder-managed-kernel")
1034+
1035+
if start != -1 and end != -1 and end > start:
1036+
end += len("# <<< coder-managed-kernel")
1037+
new = text[:start] + block + text[end:]
1038+
else:
1039+
new = text.rstrip()
1040+
if new:
1041+
new += "\n\n"
1042+
new += block + "\n"
1043+
1044+
config.write_text(new)
1045+
PY
1046+
1047+
echo "✓ Jupyter kernel '$KERNEL_NAME' ready"
1048+
EOT
1049+
run_on_start = true
1050+
start_blocks_login = false
1051+
}
1052+
9901053
module "code-server" {
9911054
count = data.coder_workspace.me.start_count
9921055
source = "registry.coder.com/coder/code-server/coder"
@@ -1092,7 +1155,7 @@ module "jupyterlab" {
10921155
source = "registry.coder.com/coder/jupyterlab/coder"
10931156
version = "~> 1.2"
10941157
agent_id = coder_agent.main.id
1095-
depends_on = [coder_script.setup_pipx]
1158+
depends_on = [coder_script.setup_pipx, coder_script.setup_jupyter_kernel]
10961159
}
10971160

10981161
resource "coder_ai_task" "opencode_task" {

0 commit comments

Comments
 (0)