diff --git a/runtime/plugins/linter/linter.lua b/runtime/plugins/linter/linter.lua index 50465a3d..8a620caf 100644 --- a/runtime/plugins/linter/linter.lua +++ b/runtime/plugins/linter/linter.lua @@ -86,6 +86,7 @@ function preinit() makeLinter("swiftc", "swift", "xcrun", {"swiftc", "%f"}, "%f:%l:%c:.+: %m", {"darwin"}, true) makeLinter("swiftc", "swift", "swiftc", {"%f"}, "%f:%l:%c:.+: %m", {"linux"}, true) makeLinter("yaml", "yaml", "yamllint", {"--format", "parsable", "%f"}, "%f:%l:%c:.+ %m") + makeLinter("nix-linter", "nix", "nix-linter", {"%f"}, "%m at %f:%l:%c", {"linux"}, true) config.MakeCommand("lint", function(bp, args) bp:Save() diff --git a/runtime/syntax/nix.yaml b/runtime/syntax/nix.yaml new file mode 100644 index 00000000..edc42eec --- /dev/null +++ b/runtime/syntax/nix.yaml @@ -0,0 +1,27 @@ +filetype: nix + +detect: + filename: "\\.nix$" + +rules: + - special: "\\b(Ellipsis|null|self|super|true|false|abort)\\b" + - statement: "\\b(let|in|with|import|rec|inherit)\\b" + - symbol.operator: "([~^.:;,+*|=!\\%@]|<|>|/|-|&)" + - symbol.brackets: "([(){}]|\\[|\\])" + + - constant.number: "\\b[0-9](_?[0-9])*(\\.([0-9](_?[0-9])*)?)?(e[0-9](_?[0-9])*)?\\b" + + - constant.string: + start: "\"" + end: "\"" + rules: [] + + - constant.string: + start: "''" + end: "''" + rules: [] + + - comment: + start: "#" + end: "$" + rules: []