35 lines
1.2 KiB
Markdown
35 lines
1.2 KiB
Markdown
# python-uv (minimal uv-based dev workspace)
|
|
|
|
One template, intended for a **single workspace** per user (work + home projects coexist in `~/work/` and `~/home/`; `uv` gives each project its own venv).
|
|
|
|
## What's in the workspace
|
|
- Base: `ghcr.io/astral-sh/uv:bookworm-slim`
|
|
- Python: latest stable via `uv python install` (tracks Astral's release channel)
|
|
- code-server (browser VS Code)
|
|
- git, curl, nano, openssh-client
|
|
- Intel Arc renderD128 mounted at `/dev/dri/renderD128`
|
|
|
|
## Persistent storage
|
|
`$HOME` is bind-mounted from `/mnt/pve/unas/services/coder/<user>/<workspace>/` on UNAS.
|
|
Workspace stop/rebuild is safe — files persist.
|
|
|
|
## Per-project pattern
|
|
```bash
|
|
cd ~/work/myproj
|
|
uv init # if new
|
|
uv add fastapi uvicorn # adds to pyproject + locks
|
|
uv run python main.py
|
|
```
|
|
|
|
## Push template to Coder
|
|
From a host with the Coder CLI configured:
|
|
|
|
```bash
|
|
coder templates push python-uv -d /opt/stacks/coder/templates/python-uv
|
|
```
|
|
|
|
Then in the Coder UI: **Workspaces → Create Workspace → python-uv → name it `dev`**.
|
|
|
|
## Optional: dotfiles
|
|
On workspace creation you can pass a Git URL (e.g. `https://git.nuclide.systems/fkrebs/dotfiles.git`). Coder clones it and runs `install.sh`.
|