mirror of
https://github.com/nix-community/dream2nix.git
synced 2024-12-15 17:53:11 +03:00
43 lines
1.6 KiB
Markdown
43 lines
1.6 KiB
Markdown
# Translators
|
|
This document classifies different methods for translating requirement/lock files to the generic lock format and describes how the resulting packages can be integrated into nix builds inside and outside of nixpkgs.
|
|
|
|
|
|
## pure-nix (preferred)
|
|
Suitable if:
|
|
- the input contains information like URLs and hashes
|
|
- nix supports the hashing algorithm
|
|
- the input can be processed with the nix language directly
|
|
|
|
Usage outside of nixpkgs:
|
|
- The input + translator are enough, not requiring any pre-processing.
|
|
|
|
Usage inside nixpkgs:
|
|
- The input + translator are enough, not requiring any pre-processing.
|
|
|
|
## IFD/recursive (compatible with import from derivation or recursive nix)
|
|
Suitable if:
|
|
- the input contains information like URLs and hashes
|
|
- nix understands the hashing algorithm
|
|
- to process the input, a nix build is required, because for example:
|
|
- the format cannot be parsed with the nix language (yaml etc.)
|
|
- processing the input is too complex and therefore inefficient in nix language
|
|
|
|
Usage outside of nixpkgs:
|
|
- The input + translator are enough. The generic lock file is generated via IFD
|
|
|
|
Usage inside nixpkgs:
|
|
- generic lock file must be pre-generated using dream2nix cli
|
|
|
|
## impure (running outside of nix build)
|
|
Suitable if:
|
|
- the input is missing URLs or hashes
|
|
- the method used to process the input contains impurities, like for example:
|
|
- queries to an online index with varying responses
|
|
- packages must be downloaded to discover important meta data like dependencies.
|
|
|
|
Usage outside of nixpkgs:
|
|
- generic lock file must be pre-generated using dream2nix cli
|
|
|
|
Usage inside nixpkgs:
|
|
- generic lock file must be pre-generated using dream2nix cli
|