A collection of DevContainer features for Arch Linux, providing stable and reliable development container experiences.
π¦ Yay AUR Helper
Installs yay - a popular AUR helper for easy installation of packages from the Arch User Repository.
{
"features": {
"ghcr.io/zyrakq/arch-devcontainer-features/yay:1": {
"installPackages": "visual-studio-code-bin,discord"
}
}
}
Configures Chaotic-AUR repository for fast installation of pre-built AUR packages without compilation.
{
"features": {
"ghcr.io/zyrakq/arch-devcontainer-features/chaotic-aur:1": {
"mirror": "auto",
"installPackages": "visual-studio-code-bin,discord"
}
}
}
π Clone Repository
Automatically clones a Git repository into your devcontainer workspace during container creation.
{
"features": {
"ghcr.io/zyrakq/arch-devcontainer-features/clone-repo:1": {
"repoUrl": "https://github.com/user/repo.git",
"targetDir": "/workspace/project"
}
}
}
π’ Node.js and npm
Installs Node.js and npm with sudo-free configuration for Arch Linux DevContainers.
{
"features": {
"ghcr.io/zyrakq/arch-devcontainer-features/node:1": {
"nodeVersion": "lts",
"globalPackages": "typescript,nodemon"
}
}
}
π¦ Rust and Cargo
Installs Rust programming language, Cargo package manager, and development tools via rustup for Arch Linux.
{
"features": {
"ghcr.io/zyrakq/arch-devcontainer-features/rust:1": {
"rustVersion": "stable",
"additionalTargets": "wasm32-unknown-unknown",
"globalCrates": "cargo-watch,cargo-edit,cargo-audit"
}
}
}
π£ .NET SDK and Runtime
Installs .NET SDK, runtime, and development tools from official Arch Linux packages.
{
"features": {
"ghcr.io/zyrakq/arch-devcontainer-features/dotnet:1": {
"dotnetVersion": "8.0",
"installEntityFramework": true,
"installGlobalTools": "dotnet-format"
}
}
}
Legacy feature that installs .NET SDK and runtime from AUR packages. ASP.NET Core Runtime is included automatically.
{
"features": {
"ghcr.io/zyrakq/arch-devcontainer-features/yay:1": {},
"ghcr.io/zyrakq/arch-devcontainer-features/dotnet-bin:1": {
"dotnetVersion": "latest"
}
}
}
This project uses a Git submodules architecture for stability:
arch-devcontainer-features/
βββ src/ # Our features
β βββ yay/
β βββ clone-repo/
β βββ node/
β βββ rust/
β βββ dotnet/
β βββ dotnet-bin/
βββ vendor/ # Dependencies
βββ bartventer-features/ # Git submodule v1.24.5
βββ scripts/
βββ archlinux_util_setup.sh
- β Stability: Dependency version pinned to v1.24.5
- β Reliability: Works without external service dependencies
- β Controlled updates: Updates only after testing
- β Offline capability: All necessary scripts available locally
For quick start, you can use:
- π³ Ready Images: bartventer/devcontainer-images - ready-to-use DevContainer images for Arch Linux that can be extended with these features
- π Templates: zyrakq/arch-devcontainer-templates - DevContainer templates for Arch Linux that can be extended with these features
{
"name": "Arch Linux DevContainer",
"image": "ghcr.io/bartventer/devcontainer-images/base-archlinux:latest",
"features": {
"ghcr.io/zyrakq/arch-devcontainer-features/yay:1": {
"installPackages": "git,vim,curl"
},
"ghcr.io/zyrakq/arch-devcontainer-features/node:1": {
"nodeVersion": "lts",
"globalPackages": "typescript,nodemon"
},
"ghcr.io/zyrakq/arch-devcontainer-features/rust:1": {
"rustVersion": "stable",
"globalCrates": "cargo-watch,cargo-edit,cargo-audit"
},
"ghcr.io/zyrakq/arch-devcontainer-features/dotnet:1": {
"dotnetVersion": "8.0",
"installEntityFramework": true
},
"ghcr.io/zyrakq/arch-devcontainer-features/clone-repo:1": {
"repoUrl": "https://github.com/your-org/your-project.git",
"targetDir": "/workspace"
}
},
"postCreateCommand": "node --version && npm --version && rustc --version && cargo --version && dotnet --version && echo 'DevContainer ready!'"
}
All features in this repository install after ghcr.io/bartventer/arch-devcontainer-features/common-utils
to ensure proper installation order and use scripts from the vendored bartventer-features
submodule.
Important Notes:
- Features dynamically download scripts based on the current submodule commit hash
- Script versions are only updated when the submodule is updated to a new commit/tag
- Features will fallback to
main
branch if submodule commit is not found
# Check current submodule version
git submodule status
# Check available versions
cd vendor/bartventer-features
git fetch --tags
git tag --sort=-version:refname | head -10
# Update to new version (recommended: use tags)
git checkout v1.25.0
cd ../..
git add vendor/bartventer-features
git commit -m "Update bartventer-features to v1.25.0"
# Verify the commit hash that will be used
git ls-tree HEAD vendor/bartventer-features
Features automatically generate URLs using the submodule commit hash:
# Current submodule commit
COMMIT=$(git ls-tree HEAD vendor/bartventer-features | awk '{print $3}')
# Generated URL
URL="https://raw.githubusercontent.com/bartventer/arch-devcontainer-features/${COMMIT}/scripts/archlinux_util_setup.sh"
βββ .devcontainer/ # DevContainer configuration for development
βββ src/ # DevContainer features
β βββ yay/ # Yay AUR helper feature
β β βββ devcontainer-feature.json
β β βββ install.sh
β β βββ README.md
β βββ chaotic-aur/ # Chaotic-AUR repository feature
β β βββ devcontainer-feature.json
β β βββ install.sh
β β βββ NOTES.md
β β βββ README.md
β βββ clone-repo/ # Clone repository feature
β β βββ devcontainer-feature.json
β β βββ install.sh
β β βββ README.md
β βββ node/ # Node.js and npm feature
β β βββ devcontainer-feature.json
β β βββ install.sh
β β βββ README.md
β βββ rust/ # Rust and Cargo feature
β β βββ devcontainer-feature.json
β β βββ install.sh
β β βββ NOTES.md
β β βββ examples.md
β β βββ README.md
β βββ dotnet/ # .NET SDK and runtime feature (official packages)
β β βββ devcontainer-feature.json
β β βββ install.sh
β β βββ NOTES.md
β β βββ README.md
β βββ dotnet-bin/ # .NET SDK and runtime feature (AUR packages)
β βββ devcontainer-feature.json
β βββ install.sh
β βββ NOTES.md
βββ vendor/ # Git submodule dependencies
β βββ bartventer-features/
βββ test/ # Feature tests
βββ README.md # This file
linux/amd64
linux/arm64
- Primary: Arch Linux
- Secondary: Other Linux distributions (for clone-repo)
- Docker or Podman
- Visual Studio Code with Dev Containers extension
- Git (for cloning features)
The project includes automated processes:
- Testing: Automated tests for all features
- Publishing: Publication to GitHub Container Registry
- Versioning: Semantic versioning
- Documentation: Automatic documentation updates
Features are automatically published to:
ghcr.io/zyrakq/arch-devcontainer-features/yay
ghcr.io/zyrakq/arch-devcontainer-features/chaotic-aur
ghcr.io/zyrakq/arch-devcontainer-features/clone-repo
ghcr.io/zyrakq/arch-devcontainer-features/node
ghcr.io/zyrakq/arch-devcontainer-features/rust
ghcr.io/zyrakq/arch-devcontainer-features/dotnet
ghcr.io/zyrakq/arch-devcontainer-features/dotnet-bin
- Yay AUR Helper - Detailed yay feature documentation
- Chaotic-AUR Repository - Chaotic-AUR feature documentation
- Clone Repository - Clone-repo feature documentation
- Node.js and npm - Node.js feature documentation
- Rust and Cargo - Rust feature documentation
- .NET SDK and Runtime - .NET feature documentation (official packages)
- .NET SDK and Runtime (AUR) - .NET feature documentation (AUR packages)
- DevContainers Specification - Official specification
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Commit your changes:
git commit -m 'Add amazing feature'
- Push to the branch:
git push origin feature/amazing-feature
- Open a Pull Request
- All features should work on Arch Linux
- Add tests for new features
- Update documentation
- Follow existing code style
- Use semantic versioning
This project is dual-licensed under:
This project uses code from:
- bartventer/arch-devcontainer-features - Arch Linux utilities
- devcontainers/features - Templates and examples
Thanks to the authors for their contributions to the DevContainers ecosystem!
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: DevContainers.dev
β If this project was helpful, please give it a star!