catalog
Resolve a list of Package Groups
Resolves a list of package groups, each being a list of package descriptors.
Required Body:
- groups: An object with an items array of PackageGroups to resolve.
Optional Query Parameters:
- candidate_pages: Number of additional candidate pages to return (default: 0)
Returns:
- ResolvedPackageGroups: An object with an items array of ResolvedPackageGroup items.
Resolution Rules:
- Each PackageGroup is resolved independently.
- Each page that has packages meeting all descriptors in the group is returned.
- The latest complete page includes full package details.
- Additional candidate pages are returned without full details.
PackageDescriptor Fields:
- install_id: [required] Reference identifier for the package in the manifest. Used for error messages and result correlation.
- attr_path: [required] The nix attribute path to match exactly.
- systems: [required] List of systems to resolve for (e.g., x86_64-linux).
- version: [optional] Version constraint. Can be a literal version or semver constraint. Packages whose version cannot be parsed as semver are excluded when using semver constraints.
- derivation: [optional] Specific derivation path to match.
- allow_pre_releases: [optional] Include pre-release versions when using semver constraints (default: False).
- allow_broken: [optional] Include packages marked as broken (default: False).
- allow_unfree: [optional] Include packages with unfree licenses (default: True).
- allow_insecure: [optional] Include packages marked as insecure (default: False).
- allowed_licenses: [optional] List of acceptable license identifiers.
- allow_missing_builds: [optional] Include packages without confirmed build artifacts (default: False). If resolution fails with this constraint, it may be relaxed with a warning message.
post/api/v1/catalog/resolve
Query parameters
candidate_pagesinteger
Request body
Example request
{
"items": [
{
"descriptors": [
{
"attr_path": "curl",
"install_id": "curl",
"systems": [
"x86_64-linux"
]
},
{
"attr_path": "slack",
"install_id": "slack",
"systems": [
"x86_64-linux"
]
},
{
"attr_path": "xorg.xeyes",
"install_id": "xeyes",
"systems": [
"x86_64-linux"
]
}
],
"name": "test"
}
]
}Response
A list of resolved package groups
Example response
{
"items": [
{
"candidate_pages": [],
"messages": [],
"name": "test",
"page": {
"complete": true,
"messages": [],
"packages": [
{
"attr_path": "curl",
"broken": false,
"catalog": "nixpkgs",
"derivation": "/nix/store/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-curl-8.5.0.drv",
"description": "A command line tool for transferring files with URL syntax",
"insecure": false,
"install_id": "curl",
"license": "curl",
"locked_url": "https://github.com/flox/nixpkgs?rev=abc123def456",
"missing_builds": false,
"name": "curl-8.5.0",
"outputs": [
{
"name": "out",
"store_path": "/nix/store/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb-curl-8.5.0"
},
{
"name": "man",
"store_path": "/nix/store/cccccccccccccccccccccccccccccccc-curl-8.5.0-man"
}
],
"outputs_to_install": [
"out",
"man"
],
"pkg_path": "curl",
"pname": "curl",
"rev": "abc123def456",
"rev_count": 12345,
"rev_date": "2024-01-15T00:00:00Z",
"scrape_date": "2024-01-15T00:00:00Z",
"stabilities": [
"stable"
],
"system": "x86_64-linux",
"unfree": false,
"version": "8.5.0"
}
],
"page": 1,
"url": "https://github.com/flox/nixpkgs?rev=abc123def456"
}
}
]
}