Skip to content

bencevans/gweithdy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gweithdy

Gweithdy (Welsh for "Workshop" — a place for making things or training).

Gweithdy is an opinionated development environment. It bundles common toolchains for Python, Node.js, Rust and R, and uses

Visual Studio Code as the editor via a VS Code Tunnel so you can connect with a local VS Code installation (Remote Tunnels extension) or through vscode.dev.

Gweithdy does not include Conda — it prefers uv for creating and managing distinct, project-focused Python environments. To learn more about connecting via a tunnel, see the VS Code Remote Tunnels documentation.

Features

  • Automated Git setup
  • Ubuntu LTS Base
  • uv for managing Python environments
  • Rust toolchain
  • nvm for managing Node.js projects
  • bun runtime
  • Opinionated: includes toolchains for Python, Node.js, Rust and R, with VS Code Tunnel as the editor
  • Essential CLI tools: git, vim, nano, curl, wget, jq
  • Development tools: tmux, htop, build-essential, glances
  • Fast utilities: ripgrep, bat, fzf
  • GitHub CLI (gh) for repository management
  • Database clients: PostgreSQL, Redis, MySQL

Build

git clone ...
cd gweithdy
docker build -t ghcr.io/bencevans/gweithdy:latest .

Prebuilt container

A prebuilt image is available on GitHub Container Registry:

docker pull ghcr.io/bencevans/gweithdy:latest

Run the prebuilt image (example):

docker run --rm -it \
  -e GIT_USER="Your Name" \
  -e GIT_EMAIL="your.email@example.com" \
  ghcr.io/bencevans/gweithdy:latest /bin/bash

Usage

Running the Container

The container runs code tunnel by default. Configure it with environment variables:

docker run -d \
  -e GIT_USER="Your Name" \
  -e GIT_EMAIL="your.email@example.com" \
  -e CODE_TUNNEL_NAME="my-dev-machine" \
  -e CODE_ACCEPT_LICENSE="true" \
  ghcr.io/bencevans/gweithdy:latest

To run a bash shell instead:

docker run -it \
  -e GIT_USER="Your Name" \
  -e GIT_EMAIL="your.email@example.com" \
  ghcr.io/bencevans/gweithdy:latest \
  /bin/bash

Environment Variables

Git Configuration:

  • GIT_USER - Your Git username (optional)
  • GIT_EMAIL - Your Git email address (optional)

VS Code Tunnel Configuration:

  • CODE_TUNNEL_NAME - Name for the tunnel (optional, defaults to machine/container hostname)
  • CODE_ACCEPT_LICENSE - Set to true to accept VS Code server license terms (optional)
  • CODE_EXTENSIONS_DIR - Custom directory for VS Code extensions (optional)
  • CODE_SERVER_DATA_DIR - Custom directory for VS Code CLI data (optional)

VS Code Extensions:

  • DEFAULT_VSCODE_EXTENSIONS - Image default list of extensions (set in the image). Current default: ms-python.python,REditorSupport.r,REditorSupport.r-syntax.
  • VSCODE_EXTENSIONS - Comma-separated list of extensions to install at container start (overrides the default). Example: VSCODE_EXTENSIONS="ms-python.python,ms-toolsai.jupyter".

Example (override extensions at runtime):

docker run --rm -it \
  -e VSCODE_EXTENSIONS="ms-python.python,ms-toolsai.jupyter" \
  ghcr.io/bencevans/gweithdy:latest /bin/bash

RunAI

Examples to run the prebuilt image ghcr.io/bencevans/gweithdy:latest on Run:AI.

runai workspace submit gweithdy-tunnel \
  -p my-project \
  -i ghcr.io/bencevans/gweithdy:latest \
  --environment-variable GIT_USER="Your Name" \
  --environment-variable GIT_EMAIL="your.email@example.com" \
  --environment-variable CODE_ACCEPT_LICENSE="true"

Check the workspace logs for a link and authorisation code to establish the VS Code tunnel connection. Once connected, a link for the tunnel will be printed in the terminal or should be accessible in the VS Code Remote Explorer.

From the terminal you can run runai workspace describe gweithdy-tunnel and periodically check until the pod is running. Then run runai workspace logs gweithdy-tunnel, copy the given code and follow the link to authenticate with your GitHub account.

Setting up a Jupyter kernel

To use Jupyter notebooks with the Python environments in Gweithdy, you can set up a Jupyter kernel that points to the Python interpreter inside the container. Once connected to the container via VS Code Tunnel, you can create a new Python environment with uv:

uv new myenv && cd myenv

Then, install the ipykernel package in that environment:

uv add --dev ipykernel

Open the folder in VS Code by running:

code .

A new window / tab should open with the folder set as the workspace. Creating a new notebook by Ctrl+Shift+P → "Jupyter: Create New Notebook" should automatically detect the Python environment and prompt you to select it as the kernel. If it doesn't, you can manually select the kernel by clicking on the kernel name in the top right of the notebook editor and choosing the correct Python interpreter from the list.

Testing

Run the git configuration tests to verify that GIT_USER and GIT_EMAIL environment variables are properly applied.

bash tests/test_git_config.sh

For more details, see tests/README.md.

About

Remote Development Environment

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors