a devcontainer setup using arch linux as base image, with optional features for different development stacks (node, go, python, dotnet)
the base image includes:
- aws-cli-bin
- fastfetch
- github-cli
- glab
- htop
- jq
- k-git
- less
- oh-my-posh-bin
- openssh
- terraform
- zsh-autocomplete-git
- zsh-syntax-highlighting-git
- docker
- a linux-like shell (git-bash is good enough on windows)
- an ssh key for git operations (how to create one)
- if your key isn't
~/.ssh/id_ed25519, update the path in.devcontainer/devcontainer.json
- if your key isn't
- one of:
- devpod - better than vscode's devcontainer extension, more flexible, works with any editor/ide
- vscode's devcontainer extension
curl -sL https://raw.githubusercontent.com/mkvlrn/arch-devcontainer/main/setup.sh | bashthis downloads the .devcontainer directory with the base configuration and a helper script to start devpod
- create/edit
.devcontainer/.envwith your git identity:
GIT_NAME=Your Name
GIT_EMAIL=your.email@example.com- edit
.devcontainer/devcontainer.jsonto add features you need:
json
{
"features": {
"ghcr.io/mkvlrn/arch-devcontainer/node:latest": {},
"ghcr.io/mkvlrn/arch-devcontainer/go:latest": {},
"ghcr.io/mkvlrn/arch-devcontainer/python:latest": {},
"ghcr.io/mkvlrn/arch-devcontainer/dotnet:latest": {},
}
}or with options:
json
{
"features": {
"ghcr.io/mkvlrn/arch-devcontainer/node:latest": {
"nodeVersion": "22"
}
}
}| Feature | Description |
|---|---|
| node | nvm and pnpm (option: nodeVersion, default: 24) |
| go | go + tools (gopls, delve, golangci-lint, etc.) |
| python | uv package manager + newpy helper function |
| dotnet | dotnet sdk |
- SSH key: mounts
~/.ssh/id_ed25519(read-only) for git operations and commit signing - git identity: reads from
.devcontainer/.envfile for name/email configuration - container name: automatically named
devcontainer_<project-folder-name>
# default (vscode)
./devpod.sh
# specify ide
# to view supported ides run `devpod ide list`
./devpod.sh --ide zed
# recreate container (to use an updated container image, for example)
./devpod.sh --recreateopen the project in vscode, click on the devcontainer icon in the bottom left corner (but you'll probably be prompted to reopen the window in the container automatically)