lock - options
- deps
- lock.content
- lock.extraScripts
- lock.fields
- lock.fields.<name>.default
- lock.fields.<name>.script
- lock.invalidationData
- lock.lib.computeFODHash
- lock.refresh
deps
All dependencies of the package. This option should be set by the “outer world” and can be used to inherit attributes from pkgs
or inputs
etc.
By separating the task of retrieving things from the outside world, it is ensured that the dependencies are overridable.
Nothing will stop users from adding nixpkgs
itself as a dependency, but this will make it very hard for the user of the package to override any dependencies, because they’d have to figure out a way to insert their changes into the Nixpkgs fixpoint. By adding specific attributes to deps
instead, the user has a realistic chance of overriding those dependencies.
So deps should be specific, but not overly specific. For instance, the caller shouldn’t have to know the version of a dependency in order to override it. The name should suffice. (e.g. nix = nixVersions.nix_2_12
instead of inherit (nixVersions) nix_2_12
.
Type: lazy attribute set of raw value
Default:
{ }
Example:
{nixpkgs, ...}: {
inherit (nixpkgs) stdenv;
inherit (nixpkgs.haskellPackages) pandoc;
}
Declared by:
lock.content
The content of the lock file.
All fields declared via lock.fields
are contained pointing to their respective values.
Type: anything
Declared by:
lock.extraScripts
Extra shell scripts to execute when nix run .#{package}.lock
is called.
This allows adding custom logic to the lock file generation.
Type: list of path
Default:
[ ]
Declared by:
lock.fields
Fields of the lock file
Type: attribute set of (submodule)
Default:
{ }
Example:
{
pname = true;
version = true;
}
Declared by:
lock.fields.<name>.default
The default value in case the lock file doesn’t exist or doesn’t yet contain the field.
Type: null or anything
Default:
null
Declared by:
lock.fields.<name>.script
A script to refresh the value of this lock file field. The script should write the result as json file to $out.
Type: path
Declared by:
lock.invalidationData
Pass any data that should invalidate the lock file when changed. This is useful for example when the lock file should be regenerated when the requirements change.
Type: anything
Default:
{ }
Example:
{
pip = {
lockVersion = "2";
requirements = [
"requests"
"pillow"
];
};
}
Declared by:
lock.lib.computeFODHash
Helper function to write the hash of a given FOD to $out.
Type: function that evaluates to a(n) path (read only)
Declared by:
lock.refresh
Script to refresh the lock file
Type: package (read only)
Declared by: