mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-10 16:26:18 +02:00
d407d572fd
shorthand for {x = {y = {z = ...;};};}. This is especially useful for NixOS configuration files, e.g. { services = { sshd = { enable = true; port = 2022; }; }; } can now be written as { services.sshd.enable = true; services.sshd.port = 2022; } However, it is currently not permitted to write { services.sshd = {enable = true;}; services.sshd.port = 2022; } as this is considered a duplicate definition of `services.sshd'.
97 lines
3 KiB
Modula-2
97 lines
3 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 |
|
|
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")
|