init initNixExprHelpers Pos | string int int | Pos | NoPos | | Pos | Function | Pattern Expr Pos | Expr | Assert | Expr Expr Pos | Expr | With | Expr Expr Pos | Expr | If | Expr Expr Expr | Expr | OpNot | Expr | Expr | OpEq | Expr Expr | Expr | OpNEq | Expr Expr | Expr | OpAnd | Expr Expr | Expr | OpOr | Expr Expr | Expr | OpImpl | Expr Expr | Expr | OpUpdate | Expr Expr | Expr | SubPath | Expr Expr | Expr | OpHasAttr | Expr string | Expr | OpPlus | Expr Expr | Expr | OpConcat | Expr Expr | Expr | ConcatStrings | ATermList | Expr | Call | Expr Expr | Expr | Select | Expr string | Expr | Var | string | Expr | Int | int | Expr | # Strings in the evaluator carry a so-called `context' (the ATermList) # which is a list of strings representing store paths. This is to # allow users to write things like # # "--with-freetype2-library=" + freetype + "/lib" # # where `freetype' is a derivation (or a source to be copied to the # store). If we just concatenated the strings without keeping track # of the referenced store paths, then if the string is used as a # derivation attribute, the derivation will not have the correct # dependencies in its inputDrvs and inputSrcs. # # The semantics of the context is as follows: when a string with # context C is used as a derivation attribute, then the derivations in # C will be added to the inputDrvs of the derivation, and the other # store paths in C will be added to the inputSrcs of the derivations. # # For canonicity, the store paths should be in sorted order. Str | string ATermList | Expr | Str | string | Expr | ObsoleteStr # Internal to the parser, doesn't occur in ASTs. IndStr | string | Expr | # A path is a reference to a file system object that is to be copied # to the Nix store when used as a derivation attribute. When it is # concatenated to a string (i.e., `str + path'), it is also copied and # the resulting store path is concatenated to the string (with the # store path in the context). If a string or path is concatenated to # a path (i.e., `path + str' or `path + path'), the result is a new # path (if the right-hand side is a string, the context must be # empty). Path | string | Expr | List | ATermList | Expr | BlackHole | | Expr | Undefined | | Expr | Removed | | Expr | PrimOp | int ATermBlob ATermList | Expr | Attrs | ATermList | Expr | Closed | Expr | Expr | Rec | ATermList ATermList | Expr | Bool | ATermBool | Expr | Null | | Expr | Bind | string Expr Pos | ATerm | BindAttrPath | ATermList Expr Pos | ATerm | # desugared during parsing Bind | string Expr | ATerm | ObsoleteBind Inherit | Expr ATermList Pos | ATerm | Scope | | Expr | VarPat | string | Pattern | AttrsPat | ATermList ATermBool | Pattern | # bool = `...' AtPat | Pattern Pattern | Pattern | Formal | string DefaultValue | ATerm | DefaultValue | Expr | DefaultValue | NoDefaultValue | | DefaultValue | True | | ATermBool | False | | ATermBool | PrimOpDef | int ATermBlob | ATerm | AttrRHS | Expr Pos | ATerm | eTrue = makeBool(makeTrue()) eFalse = makeBool(makeFalse()) sOverrides = toATerm("__overrides")