{
  "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-zA-Z\\_])",
          "end": "(?=\\;)",
          "patterns": [
            {
              "include": "#bad-reserved"
            },
            {
              "include": "#attribute-name-single"
            },
            {
              "include": "#others"
            }
          ]
        },
        {
          "include": "#others"
        }
      ]
    },
    "attribute-name": {
      "patterns": [
        {
          "match": "\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*",
          "name": "entity.other.attribute-name.multipart.nix"
        },
        {
          "match": "\\."
        },
        {
          "include": "#string-quoted"
        },
        {
          "include": "#interpolation"
        }
      ]
    },
    "attribute-name-single": {
      "match": "\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*",
      "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-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*(\\s*\\.|\\s*=[^=])))",
          "end": "(?=([\\])};,]|\\b(else|then)\\b))",
          "patterns": [
            {
              "include": "#attrset-definition-brace-opened"
            }
          ]
        },
        {
          "begin": "(?=(\\.\\.\\.|\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*\\s*[,?]))",
          "end": "(?=([\\])};,]|\\b(else|then)\\b))",
          "patterns": [
            {
              "include": "#function-definition-brace-opened"
            }
          ]
        },
        {
          "include": "#bad-reserved"
        },
        {
          "begin": "\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*",
          "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": "\\b(if|then|else|assert|with|let|in|rec|inherit)\\b",
      "name": "invalid.illegal.reserved.nix"
    },
    "comment": {
      "patterns": [
        {
          "begin": "/\\*([^*]|\\*[^\\/])*",
          "end": "\\*\\/",
          "name": "comment.block.nix",
          "patterns": [
            {
              "include": "#comment-remark"
            }
          ]
        },
        {
          "begin": "\\#",
          "end": "$",
          "name": "comment.line.number-sign.nix",
          "patterns": [
            {
              "include": "#comment-remark"
            }
          ]
        }
      ]
    },
    "comment-remark": {
      "captures": {
        "1": {
          "name": "markup.bold.comment.nix"
        }
      },
      "match": "(TODO|FIXME|BUG|\\!\\!\\!):?"
    },
    "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": "#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"
        },
        {
          "match": "(\\bor\\b|\\.|==|!=|!|\\<\\=|\\<|\\>\\=|\\>|&&|\\|\\||-\\>|//|\\?|\\+\\+|-|\\*|/(?=([^*]|$))|\\+)",
          "name": "keyword.operator.nix"
        },
        {
          "include": "#constants"
        },
        {
          "include": "#bad-reserved"
        },
        {
          "include": "#parameter-name"
        },
        {
          "include": "#others"
        }
      ]
    },
    "function-body": {
      "begin": "(@\\s*([a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*)\\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-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*)",
              "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-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*\\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-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*)",
              "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-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*",
          "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": "markup.italic",
      "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-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-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*"
    },
    "parameter-name-and-cont": {
      "begin": "\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*",
      "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": "([a-zA-Z0-9\\.\\_\\-\\+]*(\\/[a-zA-Z0-9\\.\\_\\-\\+]+)+)",
          "beginCaptures": {
            "0": {
              "name": "string.unquoted.path.nix"
            }
          },
          "end": "(?=([\\])};,]|\\b(else|then)\\b))",
          "patterns": [
            {
              "include": "#expression-cont"
            }
          ]
        },
        {
          "begin": "(\\<[a-zA-Z0-9\\.\\_\\-\\+]+(\\/[a-zA-Z0-9\\.\\_\\-\\+]+)*\\>)",
          "beginCaptures": {
            "0": {
              "name": "string.unquoted.spath.nix"
            }
          },
          "end": "(?=([\\])};,]|\\b(else|then)\\b))",
          "patterns": [
            {
              "include": "#expression-cont"
            }
          ]
        },
        {
          "begin": "([a-zA-Z][a-zA-Z0-9\\+\\-\\.]*\\:[a-zA-Z0-9\\%\\/\\?\\:\\@\\&\\=\\+\\$\\,\\-\\_\\.\\!\\~\\*\\']+)",
          "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": "\\b(with|assert)\\b",
      "beginCaptures": {
        "0": {
          "name": "keyword.other.nix"
        }
      },
      "end": "\\;",
      "patterns": [
        {
          "include": "#expression"
        }
      ]
    }
  },
  "scopeName": "source.nix",
  "uuid": "0514fd5f-acb6-436d-b42c-7643e6d36c8f"
}
