[{"displayName":"Nix","fileTypes":["nix"],"name":"nix","patterns":[{"include":"#expression"}],"repository":{"attribute-bind":{"patterns":[{"include":"#attribute-name"},{"include":"#attribute-bind-from-equals"}]},"attribute-bind-from-equals":{"begin":"=","beginCaptures":{"0":{"name":"keyword.operator.bind.nix"}},"end":";","endCaptures":{"0":{"name":"punctuation.terminator.bind.nix"}},"patterns":[{"include":"#expression"}]},"attribute-inherit":{"begin":"\\binherit\\b","beginCaptures":{"0":{"name":"keyword.other.inherit.nix"}},"end":";","endCaptures":{"0":{"name":"punctuation.terminator.inherit.nix"}},"patterns":[{"begin":"\\(","beginCaptures":{"0":{"name":"punctuation.section.function.arguments.nix"}},"end":"(?=;)","patterns":[{"begin":"\\)","beginCaptures":{"0":{"name":"punctuation.section.function.arguments.nix"}},"end":"(?=;)","patterns":[{"include":"#bad-reserved"},{"include":"#attribute-name-single"},{"include":"#others"}]},{"include":"#expression"}]},{"begin":"(?=[A-Z_a-z])","end":"(?=;)","patterns":[{"include":"#bad-reserved"},{"include":"#attribute-name-single"},{"include":"#others"}]},{"include":"#others"}]},"attribute-name":{"patterns":[{"match":"\\b[A-Z_a-z][-'0-9A-Z_a-z]*","name":"entity.other.attribute-name.multipart.nix"},{"match":"\\."},{"include":"#string-quoted"},{"include":"#interpolation"}]},"attribute-name-single":{"match":"\\b[A-Z_a-z][-'0-9A-Z_a-z]*","name":"entity.other.attribute-name.single.nix"},"attrset-contents":{"patterns":[{"include":"#attribute-inherit"},{"include":"#bad-reserved"},{"include":"#attribute-bind"},{"include":"#others"}]},"attrset-definition":{"begin":"(?=\\{)","end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"begin":"(\\{)","beginCaptures":{"0":{"name":"punctuation.definition.attrset.nix"}},"end":"(})","endCaptures":{"0":{"name":"punctuation.definition.attrset.nix"}},"patterns":[{"include":"#attrset-contents"}]},{"begin":"(?<=})","end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#expression-cont"}]}]},"attrset-definition-brace-opened":{"patterns":[{"begin":"(?<=})","end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#expression-cont"}]},{"begin":"(?=.?)","end":"}","endCaptures":{"0":{"name":"punctuation.definition.attrset.nix"}},"patterns":[{"include":"#attrset-contents"}]}]},"attrset-for-sure":{"patterns":[{"begin":"(?=\\brec\\b)","end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"begin":"\\brec\\b","beginCaptures":{"0":{"name":"keyword.other.nix"}},"end":"(?=\\{)","patterns":[{"include":"#others"}]},{"include":"#attrset-definition"},{"include":"#others"}]},{"begin":"(?=\\{\\s*(}|[^,?]*([;=])))","end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#attrset-definition"},{"include":"#others"}]}]},"attrset-or-function":{"begin":"\\{","beginCaptures":{"0":{"name":"punctuation.definition.attrset-or-function.nix"}},"end":"(?=([]);}]|\\b(else|then)\\b))","patterns":[{"begin":"(?=(\\s*}|\"|\\binherit\\b|\\$\\{|\\b[A-Z_a-z][-'0-9A-Z_a-z]*(\\s*\\.|\\s*=[^=])))","end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#attrset-definition-brace-opened"}]},{"begin":"(?=(\\.\\.\\.|\\b[A-Z_a-z][-'0-9A-Z_a-z]*\\s*[,?]))","end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#function-definition-brace-opened"}]},{"include":"#bad-reserved"},{"begin":"\\b[A-Z_a-z][-'0-9A-Z_a-z]*","beginCaptures":{"0":{"name":"variable.parameter.function.maybe.nix"}},"end":"(?=([]);}]|\\b(else|then)\\b))","patterns":[{"begin":"(?=\\.)","end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#attrset-definition-brace-opened"}]},{"begin":"\\s*(,)","beginCaptures":{"1":{"name":"keyword.operator.nix"}},"end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#function-definition-brace-opened"}]},{"begin":"(?==)","end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#attribute-bind-from-equals"},{"include":"#attrset-definition-brace-opened"}]},{"begin":"(?=\\?)","end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#function-parameter-default"},{"begin":",","beginCaptures":{"0":{"name":"keyword.operator.nix"}},"end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#function-definition-brace-opened"}]}]},{"include":"#others"}]},{"include":"#others"}]},"bad-reserved":{"match":"(?<![-'\\w])(if|then|else|assert|with|let|in|rec|inherit)(?![-'\\w])","name":"invalid.illegal.reserved.nix"},"comment":{"patterns":[{"begin":"/\\*([^*]|\\*[^/])*","end":"\\*/","name":"comment.block.nix"},{"begin":"#","end":"$","name":"comment.line.number-sign.nix"}]},"constants":{"patterns":[{"begin":"\\b(builtins|true|false|null)\\b","beginCaptures":{"0":{"name":"constant.language.nix"}},"end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#expression-cont"}]},{"begin":"\\b(scopedImport|import|isNull|abort|throw|baseNameOf|dirOf|removeAttrs|map|toString|derivationStrict|derivation)\\b","beginCaptures":{"0":{"name":"support.function.nix"}},"end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#expression-cont"}]},{"begin":"\\b[0-9]+\\b","beginCaptures":{"0":{"name":"constant.numeric.nix"}},"end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#expression-cont"}]}]},"expression":{"patterns":[{"include":"#parens-and-cont"},{"include":"#list-and-cont"},{"include":"#string"},{"include":"#interpolation"},{"include":"#with-assert"},{"include":"#function-for-sure"},{"include":"#attrset-for-sure"},{"include":"#attrset-or-function"},{"include":"#let"},{"include":"#if"},{"include":"#operator-unary"},{"include":"#operator-binary"},{"include":"#constants"},{"include":"#bad-reserved"},{"include":"#parameter-name-and-cont"},{"include":"#others"}]},"expression-cont":{"begin":"(?=.?)","end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#parens"},{"include":"#list"},{"include":"#string"},{"include":"#interpolation"},{"include":"#function-for-sure"},{"include":"#attrset-for-sure"},{"include":"#attrset-or-function"},{"include":"#operator-binary"},{"include":"#constants"},{"include":"#bad-reserved"},{"include":"#parameter-name"},{"include":"#others"}]},"function-body":{"begin":"(@\\s*([A-Z_a-z][-'0-9A-Z_a-z]*)\\s*)?(:)","end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#expression"}]},"function-body-from-colon":{"begin":"(:)","beginCaptures":{"0":{"name":"punctuation.definition.function.nix"}},"end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#expression"}]},"function-contents":{"patterns":[{"include":"#bad-reserved"},{"include":"#function-parameter"},{"include":"#others"}]},"function-definition":{"begin":"(?=.?)","end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#function-body-from-colon"},{"begin":"(?=.?)","end":"(?=:)","patterns":[{"begin":"\\b([A-Z_a-z][-'0-9A-Z_a-z]*)","beginCaptures":{"0":{"name":"variable.parameter.function.4.nix"}},"end":"(?=:)","patterns":[{"begin":"@","end":"(?=:)","patterns":[{"include":"#function-header-until-colon-no-arg"},{"include":"#others"}]},{"include":"#others"}]},{"begin":"(?=\\{)","end":"(?=:)","patterns":[{"include":"#function-header-until-colon-with-arg"}]}]},{"include":"#others"}]},"function-definition-brace-opened":{"begin":"(?=.?)","end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#function-body-from-colon"},{"begin":"(?=.?)","end":"(?=:)","patterns":[{"include":"#function-header-close-brace-with-arg"},{"begin":"(?=.?)","end":"(?=})","patterns":[{"include":"#function-contents"}]}]},{"include":"#others"}]},"function-for-sure":{"patterns":[{"begin":"(?=(\\b[A-Z_a-z][-'0-9A-Z_a-z]*\\s*[:@]|\\{[^\"'}]*}\\s*:|\\{[^\"#'/=}]*[,?]))","end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#function-definition"}]}]},"function-header-close-brace-no-arg":{"begin":"}","beginCaptures":{"0":{"name":"punctuation.definition.entity.function.nix"}},"end":"(?=:)","patterns":[{"include":"#others"}]},"function-header-close-brace-with-arg":{"begin":"}","beginCaptures":{"0":{"name":"punctuation.definition.entity.function.nix"}},"end":"(?=:)","patterns":[{"include":"#function-header-terminal-arg"},{"include":"#others"}]},"function-header-open-brace":{"begin":"\\{","beginCaptures":{"0":{"name":"punctuation.definition.entity.function.2.nix"}},"end":"(?=})","patterns":[{"include":"#function-contents"}]},"function-header-terminal-arg":{"begin":"(?=@)","end":"(?=:)","patterns":[{"begin":"@","end":"(?=:)","patterns":[{"begin":"\\b([A-Z_a-z][-'0-9A-Z_a-z]*)","end":"(?=:)","name":"variable.parameter.function.3.nix"},{"include":"#others"}]},{"include":"#others"}]},"function-header-until-colon-no-arg":{"begin":"(?=\\{)","end":"(?=:)","patterns":[{"include":"#function-header-open-brace"},{"include":"#function-header-close-brace-no-arg"}]},"function-header-until-colon-with-arg":{"begin":"(?=\\{)","end":"(?=:)","patterns":[{"include":"#function-header-open-brace"},{"include":"#function-header-close-brace-with-arg"}]},"function-parameter":{"patterns":[{"begin":"(\\.\\.\\.)","end":"(,|(?=}))","name":"keyword.operator.nix","patterns":[{"include":"#others"}]},{"begin":"\\b[A-Z_a-z][-'0-9A-Z_a-z]*","beginCaptures":{"0":{"name":"variable.parameter.function.1.nix"}},"end":"(,|(?=}))","endCaptures":{"0":{"name":"keyword.operator.nix"}},"patterns":[{"include":"#whitespace"},{"include":"#comment"},{"include":"#function-parameter-default"},{"include":"#expression"}]},{"include":"#others"}]},"function-parameter-default":{"begin":"\\?","beginCaptures":{"0":{"name":"keyword.operator.nix"}},"end":"(?=[,}])","patterns":[{"include":"#expression"}]},"if":{"begin":"(?=\\bif\\b)","end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"begin":"\\bif\\b","beginCaptures":{"0":{"name":"keyword.other.nix"}},"end":"\\bth(?=en\\b)","endCaptures":{"0":{"name":"keyword.other.nix"}},"patterns":[{"include":"#expression"}]},{"begin":"(?<=th)en\\b","beginCaptures":{"0":{"name":"keyword.other.nix"}},"end":"\\bel(?=se\\b)","endCaptures":{"0":{"name":"keyword.other.nix"}},"patterns":[{"include":"#expression"}]},{"begin":"(?<=el)se\\b","beginCaptures":{"0":{"name":"keyword.other.nix"}},"end":"(?=([]),;}]|\\b(else|then)\\b))","endCaptures":{"0":{"name":"keyword.other.nix"}},"patterns":[{"include":"#expression"}]}]},"illegal":{"match":".","name":"invalid.illegal"},"interpolation":{"begin":"\\$\\{","beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.nix"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.embedded.end.nix"}},"name":"meta.embedded","patterns":[{"include":"#expression"}]},"let":{"begin":"(?=\\blet\\b)","end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"begin":"\\blet\\b","beginCaptures":{"0":{"name":"keyword.other.nix"}},"end":"(?=([]),;}]|\\b(in|else|then)\\b))","patterns":[{"begin":"(?=\\{)","end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"begin":"\\{","end":"}","patterns":[{"include":"#attrset-contents"}]},{"begin":"(^|(?<=}))","end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#expression-cont"}]},{"include":"#others"}]},{"include":"#attrset-contents"},{"include":"#others"}]},{"begin":"\\bin\\b","beginCaptures":{"0":{"name":"keyword.other.nix"}},"end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#expression"}]}]},"list":{"begin":"\\[","beginCaptures":{"0":{"name":"punctuation.definition.list.nix"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.list.nix"}},"patterns":[{"include":"#expression"}]},"list-and-cont":{"begin":"(?=\\[)","end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#list"},{"include":"#expression-cont"}]},"operator-binary":{"match":"(\\bor\\b|\\.|\\|>|<\\||==|!=?|<=?|>=?|&&|\\|\\||->|//|\\?|\\+\\+|[-*]|/(?=([^*]|$))|\\+)","name":"keyword.operator.nix"},"operator-unary":{"match":"([-!])","name":"keyword.operator.unary.nix"},"others":{"patterns":[{"include":"#whitespace"},{"include":"#comment"},{"include":"#illegal"}]},"parameter-name":{"captures":{"0":{"name":"variable.parameter.name.nix"}},"match":"\\b[A-Z_a-z][-'0-9A-Z_a-z]*"},"parameter-name-and-cont":{"begin":"\\b[A-Z_a-z][-'0-9A-Z_a-z]*","beginCaptures":{"0":{"name":"variable.parameter.name.nix"}},"end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#expression-cont"}]},"parens":{"begin":"\\(","beginCaptures":{"0":{"name":"punctuation.definition.expression.nix"}},"end":"\\)","endCaptures":{"0":{"name":"punctuation.definition.expression.nix"}},"patterns":[{"include":"#expression"}]},"parens-and-cont":{"begin":"(?=\\()","end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#parens"},{"include":"#expression-cont"}]},"string":{"patterns":[{"begin":"(?='')","end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"begin":"''","beginCaptures":{"0":{"name":"punctuation.definition.string.other.start.nix"}},"end":"''(?![$']|\\\\.)","endCaptures":{"0":{"name":"punctuation.definition.string.other.end.nix"}},"name":"string.quoted.other.nix","patterns":[{"match":"''([$']|\\\\.)","name":"constant.character.escape.nix"},{"include":"#interpolation"}]},{"include":"#expression-cont"}]},{"begin":"(?=\")","end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#string-quoted"},{"include":"#expression-cont"}]},{"begin":"(~?[-+.0-9A-Z_a-z]*(/[-+.0-9A-Z_a-z]+)+)","beginCaptures":{"0":{"name":"string.unquoted.path.nix"}},"end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#expression-cont"}]},{"begin":"(<[-+.0-9A-Z_a-z]+(/[-+.0-9A-Z_a-z]+)*>)","beginCaptures":{"0":{"name":"string.unquoted.spath.nix"}},"end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#expression-cont"}]},{"begin":"([A-Za-z][-+.0-9A-Za-z]*:[!$-'*-:=?-Z_a-z~]+)","beginCaptures":{"0":{"name":"string.unquoted.url.nix"}},"end":"(?=([]),;}]|\\b(else|then)\\b))","patterns":[{"include":"#expression-cont"}]}]},"string-quoted":{"begin":"\"","beginCaptures":{"0":{"name":"punctuation.definition.string.double.start.nix"}},"end":"\"","endCaptures":{"0":{"name":"punctuation.definition.string.double.end.nix"}},"name":"string.quoted.double.nix","patterns":[{"match":"\\\\.","name":"constant.character.escape.nix"},{"include":"#interpolation"}]},"whitespace":{"match":"\\s+"},"with-assert":{"begin":"(?<![-'\\w])(with|assert)(?![-'\\w])","beginCaptures":{"0":{"name":"keyword.other.nix"}},"end":";","patterns":[{"include":"#expression"}]}},"scopeName":"source.nix"}]