forked from lix-project/lix
ca07f3e370
a rec. This will be very useful to allow end-user customisation of all-packages.nix, for instance globally overriding GCC or some other dependency. The // operator doesn't cut it: you could replace the "gcc" attribute, but all other attributes would continue to reference the original value due to the substitution semantics of rec. The syntax is a bit hacky but this is to allow backwards compatibility.
97 lines
2.9 KiB
Modula-2
97 lines
2.9 KiB
Modula-2
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 |
|
|
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")
|