Determinate Systems Introduces Flake Schemas for Customizable Nix Outputs
Key Takeaways
- ▸Flake schemas enable fully customizable output types in Nix flakes, going beyond the built-in packages, devShells, and formatter outputs
- ▸Custom outputs like disk images and configuration strings can now be properly documented and discovered via 'nix flake show' instead of appearing as 'unknown'
- ▸The feature is available in Determinate Nix 3.17.0 and later, moving from an experimental branch to general availability
Summary
Determinate Systems has announced flake schemas, a new feature in Determinate Nix 3.17.0 that enables fully customizable and extensible flake outputs. The feature addresses a long-standing limitation in Nix flakes, which previously only recognized a built-in set of output types like packages, devShells, and formatters. Developers working with non-standard outputs such as OCI images, IDE plugins, or custom disk images had to either force them into standard categories or accept them being labeled as "unknown" by Nix commands.
Flake schemas allow developers to define custom output types with full documentation and discoverability through the nix flake show command. The feature includes an inventory system that can describe what outputs are, provide short descriptions, and run evaluation checks. For example, Determinate Systems' own nixos-amis flake now uses custom schemas to properly identify disk images for AWS AMIs and epoch strings, which previously would have appeared as unknown outputs.
The announcement emphasizes that while the primary benefit of Nix flakes remains input pinning through flake.lock files for reproducibility, enhanced discoverability has been an important secondary advantage. Flake schemas extend this discoverability beyond the original built-in output types, enabling developers to build workflows around any Nix use case. The feature was previously available in a special branch of Determinate Nix CLI but is now part of the standard Determinate Nix distribution starting with version 3.17.0.
- Schemas include documentation, inventory systems, and evaluation checks to describe non-standard outputs in plain language
Editorial Opinion
Flake schemas represent a thoughtful evolution of the Nix ecosystem, addressing a real pain point for developers working with specialized build artifacts. By making the output system extensible rather than prescriptive, Determinate Systems is enabling the Nix community to adapt the tooling to their specific use cases without losing discoverability. This strikes a good balance between standardization and flexibility, which is often difficult to achieve in developer tooling. The focus on maintaining reproducibility as the primary benefit while enhancing usability shows mature product thinking.



