I believe that the currentTime, findFile, hashFile, pathExists, readDir, path (unless ?sha256), and readFile builtins are impure. This commit marks them as such in docs/builtins.md. Change-Id: Ib1b59fe643dde73cb2b00050b4ef9d3401ad22eb Signed-off-by: Adam Joseph <adam@westernsemico.com> Reviewed-on: https://cl.tvl.fyi/c/depot/+/7139 Reviewed-by: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
7 KiB
7 KiB
Nix builtins
Nix has a lot of built-in functions, some of which are accessible in
the global scope, and some of which are only accessible through the
global builtins attribute set.
This document is an attempt to track all of these builtins, but without documenting their functionality.
See also https://nixos.org/manual/nix/stable/expressions/builtins.html
| name | global | arity | pure |
|---|---|---|---|
| abort | true | 1 | |
| add | false | 2 | true |
| addErrorContext | false | ? | |
| all | false | 2 | true |
| any | false | 2 | true |
| appendContext | false | ? | |
| attrNames | false | 1 | true |
| attrValues | false | true | |
| baseNameOf | true | ||
| bitAnd | false | ||
| bitOr | false | ||
| bitXor | false | ||
| builtins | true | ||
| catAttrs | false | ||
| compareVersions | false | ||
| concatLists | false | ||
| concatMap | false | ||
| concatStringsSep | false | ||
| currentSystem | false | ||
| currentTime | false | false | |
| deepSeq | false | ||
| derivation | true | ||
| derivationStrict | true | ||
| dirOf | true | ||
| div | false | ||
| elem | false | ||
| elemAt | false | ||
| false | true | ||
| fetchGit | true | ||
| fetchMercurial | true | ||
| fetchTarball | true | ||
| fetchurl | false | ||
| filter | false | ||
| filterSource | false | ||
| findFile | false | false | |
| foldl' | false | ||
| fromJSON | false | ||
| fromTOML | true | ||
| functionArgs | false | ||
| genList | false | ||
| genericClosure | false | ||
| getAttr | false | ||
| getContext | false | ||
| getEnv | false | false | |
| hasAttr | false | ||
| hasContext | false | ||
| hashFile | false | false | |
| hashString | false | ||
| head | false | ||
| import | true | ||
| intersectAttrs | false | ||
| isAttrs | false | ||
| isBool | false | ||
| isFloat | false | ||
| isFunction | false | ||
| isInt | false | ||
| isList | false | ||
| isNull | true | ||
| isPath | false | ||
| isString | false | ||
| langVersion | false | ||
| length | false | ||
| lessThan | false | ||
| listToAttrs | false | ||
| map | true | ||
| mapAttrs | false | ||
| match | false | ||
| mul | false | ||
| nixPath | false | ||
| nixVersion | false | ||
| null | true | ||
| parseDrvName | false | ||
| partition | false | ||
| path | false | sometimes | |
| pathExists | false | false | |
| placeholder | true | ||
| readDir | false | false | |
| readFile | false | false | |
| removeAttrs | true | ||
| replaceStrings | false | ||
| scopedImport | true | ||
| seq | false | ||
| sort | false | ||
| split | false | ||
| splitVersion | false | ||
| storeDir | false | ||
| storePath | false | ||
| stringLength | false | ||
| sub | false | ||
| substring | false | ||
| tail | false | ||
| throw | true | ||
| toFile | false | ||
| toJSON | false | ||
| toPath | false | ||
| toString | true | ||
| toXML | false | ||
| trace | false | ||
| true | true | ||
| tryEval | false | ||
| typeOf | false | ||
| unsafeDiscardOutputDependency | false | ||
| unsafeDiscardStringContext | false | ||
| unsafeGetAttrPos | false | ||
| valueSize | false |
Added after C++ Nix 2.3 (without Flakes enabled)
| name | global | arity | pure |
|---|---|---|---|
| break | false | 1 | |
| ceil | false | 1 | true |
| fetchTree | true | 1 | |
| floor | false | 1 | true |
| groupBy | false | 2 | true |
| traceVerbose | false | 2 | |
| zipAttrsWith | false | 2 | true |