main
 1# Modify from https://github.com/NixOS/nixpkgs/blob/c4e0120b295daaac44f245f1c50ec06e844fe53b/pkgs/by-name/st/steelix/package.nix
 2{
 3  lib,
 4  callPackage,
 5  helix,
 6  tree-sitter-grammars,
 7  lockedGrammars ? lib.filterAttrs (name: _: tree-sitter-grammars ? "tree-sitter-${name}") (lib.importJSON ./grammars.json),
 8  steelix-unwrapped ? callPackage ./unwrapped.nix {},
 9}:
10(helix.override {
11  helix-unwrapped = steelix-unwrapped;
12  lockedGrammars = lockedGrammars;
13  grammarsOverlay = final: prev: {
14    tree-sitter-agda = prev.tree-sitter-agda.override {
15      excludeBrokenTreeSitterJson = false;
16    };
17    tree-sitter-beancount = prev.tree-sitter-beancount.override {
18      excludeBrokenTreeSitterJson = false;
19    };
20    tree-sitter-git-rebase = prev.tree-sitter-git-rebase.overrideAttrs {
21      dontPatch = true;
22    };
23    tree-sitter-glimmer = prev.tree-sitter-glimmer.override {
24      excludeBrokenTreeSitterJson = false;
25    };
26    tree-sitter-janet-simple = prev.tree-sitter-janet-simple.override {
27      excludeBrokenTreeSitterJson = false;
28    };
29    tree-sitter-qmljs = prev.tree-sitter-qmljs.overrideAttrs {
30      dontCheckForBrokenSymlinks = true;
31    };
32    tree-sitter-sql = prev.tree-sitter-sql.override {
33      generate = false;
34    };
35    tree-sitter-strace = prev.tree-sitter-strace.override {
36      excludeBrokenTreeSitterJson = false;
37    };
38    tree-sitter-tact = prev.tree-sitter-tact.override {
39      excludeBrokenTreeSitterJson = false;
40    };
41    tree-sitter-tlaplus = prev.tree-sitter-tlaplus.overrideAttrs {
42      dontPatch = true;
43    };
44    tree-sitter-vue = prev.tree-sitter-vue.override {
45      excludeBrokenTreeSitterJson = false;
46    };
47    tree-sitter-wit = prev.tree-sitter-wit.override {
48      excludeBrokenTreeSitterJson = false;
49    };
50    tree-sitter-yuck = prev.tree-sitter-yuck.override {
51      excludeBrokenTreeSitterJson = false;
52    };
53  };
54}).overrideAttrs
55(
56  _: previousAttrs: {
57    pname = "steelix";
58    strictDeps = true;
59
60    meta =
61      previousAttrs.meta
62      // {
63        description = "Helix editor with Steel (Scheme) scripting support";
64        longDescription = ''
65          Steelix is a fork of the Helix editor with Steel (Scheme) scripting support.
66        '';
67        homepage = "https://github.com/mattwparas/helix";
68        changelog = "https://github.com/mattwparas/helix/blob/${steelix-unwrapped.src.rev}/CHANGELOG.md";
69        license = lib.licenses.mpl20;
70        mainProgram = "hx";
71      };
72  }
73)