Monorepo overview
The Terra Packages monorepo contains package manifests organized by category in theanda/ directory. Each package lives in its own subdirectory with an anda.hcl manifest file that defines how to build the package.
The monorepo structure allows Terra to maintain over 1,000 packages in a single repository while keeping them organized and discoverable.
Directory categories
Packages are organized into the following top-level categories:apps
Desktop applications like Discord, Anki, and Bitwarden
desktops
Desktop environments including Budgie, Hyprland, and GNOME components
devs
Development tools like Zed, Neovide, and Android Studio
fonts
Font packages for system and application use
games
Gaming applications and utilities
langs
Programming language runtimes including Rust, Go, Python, and Zig
lib
Shared libraries like DirectX-Headers, AppArmor, and Astal
misc
Miscellaneous packages that don’t fit other categories
multimedia
Multimedia packages including FFmpeg, Carla, and GPU Screen Recorder
stardust
Stardust XR packages (server, atmosphere, protostar, etc.)
system
System-level utilities and configuration packages
terra
Core Terra infrastructure (release, GPG keys, macros)
themes
Visual themes including Fluent, Orchis, and icon themes
tools
Command-line tools like yt-dlp, topgrade, and Arduino CLI
Package directory structure
Each package follows a consistent directory structure:Some packages may have additional files like patches, sources, or configuration files alongside the manifest and spec file.
Root configuration
The rootanda.hcl file at the repository root defines global settings:
anda.hcl
- Strips the
anda/prefix from package paths - Strips the
/pkgsuffix from project names - Defines the root project context
Package groups
Thecomps.xml file defines package groups for convenient installation:
comps.xml
Finding packages
You can explore the repository structure in several ways:Browse the monorepo
Browse the monorepo
Navigate the Terra Packages repository on GitHub to explore packages by category.
Search on pkgs.org
Search on pkgs.org
Use pkgs.org to search for Terra packages with detailed metadata.
Check Repology
Check Repology
View package versions and updates on Repology.
Best practices
Follow the category structure
Place packages in the appropriate category directory based on their primary function.
Use consistent naming
Package directory names should match the primary package name defined in the spec file.
Keep manifests simple
Only include necessary configuration in
anda.hcl files. Most packages need minimal configuration.Next: Package manifests
Learn about the
anda.hcl manifest format and configuration options