Skip to content

πŸ—οΈπŸ“¦πŸ§ DevContainer features collection for Arch Linux with stable dependency management

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

zyrakq/arch-devcontainer-features

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

21 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Arch Linux DevContainer Features

A collection of DevContainer features for Arch Linux, providing stable and reliable development container experiences.

πŸš€ Available Features

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"
        }
    }
}

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"
        }
    }
}

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"
        }
    }
}

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"
        }
    }
}

πŸ—οΈ Architecture

Stable Dependency on bartventer/arch-devcontainer-features

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

Architecture Benefits

  • βœ… 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

πŸš€ Quick Start

🎯 Ready-to-use Solutions

For quick start, you can use:

πŸ“„ Creating devcontainer.json

{
    "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!'"
}

πŸ”§ Development

Feature Dependencies

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

Updating Dependencies (Submodule)

# 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

Script URL Generation

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"

Project Structure

β”œβ”€β”€ .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

πŸ“‹ Compatibility

Supported Architectures

  • linux/amd64
  • linux/arm64

Supported Systems

  • Primary: Arch Linux
  • Secondary: Other Linux distributions (for clone-repo)

Requirements

  • Docker or Podman
  • Visual Studio Code with Dev Containers extension
  • Git (for cloning features)

πŸ”„ CI/CD

GitHub Actions

The project includes automated processes:

  • Testing: Automated tests for all features
  • Publishing: Publication to GitHub Container Registry
  • Versioning: Semantic versioning
  • Documentation: Automatic documentation updates

Publication

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

πŸ“– Documentation

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Commit your changes: git commit -m 'Add amazing feature'
  4. Push to the branch: git push origin feature/amazing-feature
  5. Open a Pull Request

Development Guidelines

  • All features should work on Arch Linux
  • Add tests for new features
  • Update documentation
  • Follow existing code style
  • Use semantic versioning

πŸ“„ License

This project is dual-licensed under:

πŸ™ Acknowledgments

This project uses code from:

Thanks to the authors for their contributions to the DevContainers ecosystem!

πŸ“ž Support


⭐ If this project was helpful, please give it a star!

About

πŸ—οΈπŸ“¦πŸ§ DevContainer features collection for Arch Linux with stable dependency management

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

 
 
 

Contributors 2

  •  
  •