| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | /*Language: NixAuthor: Domen Kožar <domen@dev.si>Description: Nix functional languageWebsite: http://nixos.org/nix*/function nix(hljs) {  const NIX_KEYWORDS = {    keyword:      'rec with let in inherit assert if else then',    literal:      'true false or and null',    built_in:      'import abort baseNameOf dirOf isNull builtins map removeAttrs throw ' +      'toString derivation'  };  const ANTIQUOTE = {    className: 'subst',    begin: /\$\{/,    end: /\}/,    keywords: NIX_KEYWORDS  };  const ATTRS = {    begin: /[a-zA-Z0-9-_]+(\s*=)/,    returnBegin: true,    relevance: 0,    contains: [      {        className: 'attr',        begin: /\S+/      }    ]  };  const STRING = {    className: 'string',    contains: [ ANTIQUOTE ],    variants: [      {        begin: "''",        end: "''"      },      {        begin: '"',        end: '"'      }    ]  };  const EXPRESSIONS = [    hljs.NUMBER_MODE,    hljs.HASH_COMMENT_MODE,    hljs.C_BLOCK_COMMENT_MODE,    STRING,    ATTRS  ];  ANTIQUOTE.contains = EXPRESSIONS;  return {    name: 'Nix',    aliases: [ "nixos" ],    keywords: NIX_KEYWORDS,    contains: EXPRESSIONS  };}module.exports = nix;
 |