Is this basically Nix derivations, but with a more familiar syntax? (Dockerfiles)
Dev Containers are basically Docker Containers (either pulled from a repo or built from a Dockerfile) with some additional metadata attached so they can work as a Development Environment. Metadata includes stuff to configure debuggers, IDEs, etc.
The devcontainer spec combines 3 things:
- How to build containers for a development environment (using Docker or docker-compose)
- How to run containers for a development environment (volumes to mount, environment variables, commands to execute after containers are running, where the project will be mounted...)
- Which VS Code configuration to install and use (including extensions) within the development environment