A collection of DevContainer features for Arch Linux, providing stable and reliable development container experiences.
Configures pacman mirrorlist for faster package downloads on Arch Linux and Arch Linux ARM with multiple mirror sources.
{
"features": {
"ghcr.io/zyrakq/arch-devcontainer-features/pacman-mirror:1": {
"mode": "builtin"
}
}
}π¦ 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"
}
}
}π Bun Runtime
Installs Bun - fast all-in-one JavaScript runtime and toolkit for Arch Linux with smart fallback installation methods.
{
"features": {
"ghcr.io/zyrakq/arch-devcontainer-features/bun:1": {
"installMethod": "pacman",
"globalPackages": "typescript,esbuild"
}
}
}Installs Rust programming language and Cargo package manager from pre-compiled packages for fast installation (10-60 seconds). Includes clippy, rustfmt, rust-src, and rust-analyzer.
{
"features": {
"ghcr.io/zyrakq/arch-devcontainer-features/rust:2": {
"globalCrates": "cargo-watch,cargo-edit,cargo-audit"
}
}
}Use this when: You need stable Rust with fast installation for standard development.
Note: clippy and rustfmt are always included and cannot be disabled.
Installs Rust programming language, Cargo package manager, and development tools via rustup for Arch Linux. Provides beta/nightly toolchains and additional compilation targets.
{
"features": {
"ghcr.io/zyrakq/arch-devcontainer-features/rust-bin:1": {
"rustVersion": "stable",
"rustupProfile": "minimal",
"additionalTargets": "wasm32-unknown-unknown",
"globalCrates": "cargo-watch,cargo-edit,cargo-audit"
}
}
}Use this when: You need beta/nightly toolchains, multiple toolchain management, or additional compilation targets.
π£ .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/
β βββ chaotic-aur/
β βββ clone-repo/
β βββ node/
β βββ bun/
β βββ rust/ # Rust and Cargo feature (pre-compiled)
β βββ rust-bin/ # Rust and Cargo feature (rustup)
β βββ 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-bin: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
mainbranch 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-featuresFeatures 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
β β βββ NOTES.md
β β βββ README.md
β βββ bun/ # Bun runtime feature
β β βββ devcontainer-feature.json
β β βββ install.sh
β β βββ NOTES.md
β β βββ README.md
β βββ rust/ # Rust and Cargo feature (pre-compiled)
β β βββ devcontainer-feature.json
β β βββ install.sh
β β βββ NOTES.md
β β βββ examples.md
β β βββ README.md
β βββ rust-bin/ # Rust and Cargo feature (rustup)
β β βββ 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 filelinux/amd64linux/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/pacman-mirrorghcr.io/zyrakq/arch-devcontainer-features/yayghcr.io/zyrakq/arch-devcontainer-features/chaotic-aurghcr.io/zyrakq/arch-devcontainer-features/clone-repoghcr.io/zyrakq/arch-devcontainer-features/nodeghcr.io/zyrakq/arch-devcontainer-features/bunghcr.io/zyrakq/arch-devcontainer-features/rustghcr.io/zyrakq/arch-devcontainer-features/rust-binghcr.io/zyrakq/arch-devcontainer-features/dotnetghcr.io/zyrakq/arch-devcontainer-features/dotnet-bin
- Pacman Mirror Configuration - Pacman mirrorlist configuration
- 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
- Bun Runtime - Bun runtime feature documentation
- Rust and Cargo (pre-compiled) - Rust feature documentation (pre-compiled packages)
- Rust and Cargo (rustup) - Rust feature documentation (rustup)
- .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!