This looks totally awesome!
I am very happy about C like syntax and case sensitivity.
Making own functions is fantastic, variable scope (finally!), arithmetic operators, code blocks, inlining NSIS code these all are great!
Using hash for defines is a little strange, but it reminds me a old-good C/C++
I am a little disappointed from function calls:
CopyFiles("source", "dest", true, true, 99);
CopyFiles /SILENT /FILESONLY "source" "dest" 99
WTF is that true, true, 99
Althought I am skilled NSIS user on first signt I didn't have any idea what it means. I suggest to use enums
for parameters [flags] - is this possible?
Maybe these flags should be ORed someone??
CopyFiles("from", "to", CF_SILENT|CF_FILESONLY)
Also sending some parameters as string is not good idea e.g
MessageBox("MB_OK|MB_ICONEXCLAMATION", "NSIS is not installed on this machine. Setup will now exit.");
MB_OK|MB_ICONEXCLAMATION would fit perfectly for enums
I tried your .nsl with MUI2 and it does not work (as I assumed)
so everything should be rewritten into .nsl which is enormus work.
I noticed that generated .nsi file requires a little of brushing.
Anyway: nsL looks very promising and you made a really good job on it!
In this state I suggest using nsL in this style:
Create .nsl file where you create all logic, functions, etc because in nsL it is easier than in .nsi
and then generate .nsi file which you later include in your installer, you brush it a little and generate final installer.