builtins-derivation
| state: |
released |
| maintainers: |
@DavHau
|
Introduction
Options
builtins-derivation
builtins-derivation.__contentAddressed
builtins-derivation.__structuredAttrs
builtins-derivation.allowSubstitutes
builtins-derivation.allowedReferences
builtins-derivation.allowedRequisites
builtins-derivation.args
builtins-derivation.builder
builtins-derivation.disallowedReferences
builtins-derivation.disallowedRequisites
builtins-derivation.exportReferenceGraph
builtins-derivation.impureEnvVars
builtins-derivation.outputHash
builtins-derivation.outputHashAlgo
builtins-derivation.outputHashMode
builtins-derivation.outputs
builtins-derivation.passAsFile
builtins-derivation.preferLocalBuild
builtins-derivation.system
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 |
| source |
dream2nix/modules/dream2nix/core/deps |
| default |
|
| example |
{nixpkgs, ...}: {
inherit (nixpkgs) stdenv;
inherit (nixpkgs.haskellPackages) pandoc;
}
|
env
environment variables passed to the build environment
| type |
attribute set of (null or boolean or signed integer or string or path or package or list of (boolean or signed integer or string or path or package)) |
| source |
dream2nix/modules/dream2nix/core/env |
| default |
|
name
The name of the package
version
The version of the package
lock
lock.content
The content of the lock file.
All fields declared via lock.fields are contained pointing to their respective values.
Extra shell scripts to execute when nix run .#{package}.lock is called.
This allows adding custom logic to the lock file generation.
lock.fields
Fields of the lock file
<name>
lock.fields.<name>.default
The default value in case the lock file doesn't exist or doesn't yet contain the field.
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.
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.
lib
lock.lib.computeFODHash
Helper function to write the hash of a given FOD to $out.
lock.refresh
Script to refresh the lock file
paths
paths.cacheFile
Path to the eval cache file of the current package.
Relative to "${paths.projectRoot}/${paths.package}"".
paths.lockFile
Path to the lock file of the current package.
Relative to "${paths.projectRoot}/${paths.package}"".
paths.package
Path to the directory containing the definition of the current package.
Relative to 'paths.projectRoot'.
This helps locating package definitions for lock & update scripts.
paths.projectRoot
Path to the root of the project on which dream2nix operates.
Must contain the marker file specified by 'paths.projectRootFile'
This helps locating lock files at evaluation time.
paths.projectRootFile
File name to look for to determine the root of the project.
Ensure 'paths.projectRoot' contains a file named like this.
This helps locating package definitions for lock & update scripts.
public
The final result of the evaluated package.
Contains everything that nix expects from a derivation.
Contains fields like name, outputs, drvPath, outPath, etc.
Can be build with nix-build or nix build.
public.docs
The manual of the package as a website