Skip to main content
System requirements tell Pixi what system specifications your environment needs to install and run correctly. They ensure dependencies match the operating system and hardware of your machine.

What Are System Requirements?

System requirements define the “kind of machine” your environment can run on:
This creates an environment that can run on:
  • Linux with kernel version 4.18
  • GNU C Library (glibc) version 2.28
  • CUDA version 12
  • macOS version 13.0
System requirements combine with your platform definitions to ensure environment consistency and machine compatibility.

How System Requirements Work

When resolving dependencies, Pixi combines:
  1. Default requirements for your platforms
  2. Custom requirements from your [system-requirements] table
System requirements are implemented as virtual packages - special packages like __linux, __cuda, __glibc that declare system features without containing files. The solver uses them to filter incompatible packages.
The root-level [system-requirements] applies to the default feature, affecting all environments that include it (unless no-default-feature = true).

Version Semantics

System requirements specify the version available on your system, not a maximum or minimum:
The dependency resolver determines compatibility:
  • Package requires __cuda >= 12 → System with 12.1, 12.6, or higher matches ✅
  • Package requires __cuda <= 12 → System with 12.0, 11, or lower matches ✅
Most packages specify minimum versions (>=), so system requirements often define the minimum system specifications.
Example from cuda-version-12.9:

Default System Requirements

Pixi provides sensible defaults per platform:

Customizing System Requirements

Adjusting for Older Systems

If you see an error like:
Lower the requirements to match your system:
Lowering system requirements may allow installation of packages that don’t work correctly on older systems. Test thoroughly.

CUDA Configuration

To use CUDA, specify the version in system requirements:
This ensures:
  • CUDA is recognized during dependency resolution
  • Packages requiring __cuda >= 12.1 can be installed
  • The version is locked into the lock file
No. The cuda field specifies the CUDA version supported by your NVIDIA driver API, not the runtime version.It ensures packages with CUDA dependencies resolve correctly based on your driver’s capabilities.

Environment-Specific Requirements

Set different system requirements per feature/environment:
Use environment-specific system requirements when supporting multiple hardware configurations in one workspace.

Available System Requirements

Linux

Common values:
  • linux: "4.18", "5.4", "5.15"
  • libc.family: "glibc", "musl"
  • libc.version: "2.17", "2.28", "2.31"

macOS

Common values:
  • "11.0" - Big Sur
  • "12.0" - Monterey
  • "13.0" - Ventura
  • "14.0" - Sonoma

CUDA

Common values:
  • "11.8", "12.0", "12.1", "12.2"

Architecture

Common values:
  • "x86_64" - Intel/AMD 64-bit
  • "aarch64" - ARM 64-bit

Overriding System Requirements

Override detected system requirements using environment variables: CUDA Version
glibc Version
macOS Version
Overrides can allow installing packages that won’t run on your system. Use carefully and test thoroughly.

Real-World Examples

CUDA Machine Learning Project

Multi-Environment with Different Requirements

Legacy System Support

Best Practices

Document System Requirements
Test on Minimum Requirements
Use Environment Variables in CI
Set Per-Environment Requirements

Troubleshooting

Error: Mismatching virtual package
Solution: Update CUDA drivers or lower requirements:
Error: Package has no builds for system
Solution: Install compatible package version or update system requirements.

Further Reading