$ show itsManjeet/avyos
This repository is the build system for AvyOS, a Linux distribution that compiles all packages from source using a custom Go-based tool called 'ignite'. The system defines hundreds of YAML recipes under `elements/` for building the kernel, system libraries, desktop environments (KDE, GNOME, Xfce, Sway, etc.), development toolchains, and applications. The ignite tool handles dependency resolution, source fetching, containerized builds (via bubblewrap), and image generation (ISO, disk images, OSTree commits). The architecture is a declarative recipe system with reusable includes, patch management, and a web dashboard for monitoring builds. Key entry points are the `ignite` CLI and the YAML recipe files. External dependencies include upstream source tarballs, patches, and a custom build environment. The repository also includes configuration for secure boot, A/B updates, and live ISO booting. While the codebase is well-structured and demonstrates significant engineering effort, it is a personal project with limited documentation, many TODO comments, and potential drift due to custom kernel versioning and future-dated Go version requirements.
The LLM identified 3 files worth highlighting for reuse:
Core of the custom build system 'ignite'. It defines the Container struct that wraps bubblewrap for reproducible builds, handles recipe parsing, dependency resolution, caching, and workspace management. This is a self-contained, reusable pattern for building a YAML-driven build orchestrator that could be extracted and adapted for other source-based distribution projects.
Reusable YAML include file that defines common build steps for packaging applications as AppImages. It provides a standardized pattern for preparing AppImage bundles, including dependency gathering and runtime setup. This pattern can be reused across multiple application recipes and is isolated from project-specific logic.
A self-contained shell script that generates a custom initramfs for the distribution. It copies kernel modules, binaries, udev rules, and plymouth themes, then compresses with zstd. The script is parameterized and could be extracted to build initramfs for other Linux systems, demonstrating a clean pattern for initramfs generation without relying on dracut or mkinitcpio.