build(nix): add a way to override what grammars get built (#3141)
This commit is contained in:
parent
2f1d3d0899
commit
85a5df0391
2 changed files with 109 additions and 74 deletions
38
flake.nix
38
flake.nix
|
@ -18,7 +18,8 @@
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
nixCargoIntegration,
|
nixCargoIntegration,
|
||||||
...
|
...
|
||||||
}:
|
}: let
|
||||||
|
outputs = config:
|
||||||
nixCargoIntegration.lib.makeOutputs {
|
nixCargoIntegration.lib.makeOutputs {
|
||||||
root = ./.;
|
root = ./.;
|
||||||
renameOutputs = {"helix-term" = "helix";};
|
renameOutputs = {"helix-term" = "helix";};
|
||||||
|
@ -42,14 +43,14 @@
|
||||||
path = "${common.root}/${rel}";
|
path = "${common.root}/${rel}";
|
||||||
name = rel;
|
name = rel;
|
||||||
};
|
};
|
||||||
grammars = pkgs.callPackage ./grammars.nix {};
|
grammars = pkgs.callPackage ./grammars.nix config;
|
||||||
runtimeDir = pkgs.runCommandNoCC "helix-runtime" {} ''
|
runtimeDir = pkgs.runCommandNoCC "helix-runtime" {} ''
|
||||||
mkdir -p $out
|
mkdir -p $out
|
||||||
ln -s ${mkRootPath "runtime"}/* $out
|
ln -s ${mkRootPath "runtime"}/* $out
|
||||||
rm -r $out/grammars
|
rm -r $out/grammars
|
||||||
ln -s ${grammars} $out/grammars
|
ln -s ${grammars} $out/grammars
|
||||||
'';
|
'';
|
||||||
in {
|
overridedAttrs = {
|
||||||
# disable fetching and building of tree-sitter grammars in the helix-term build.rs
|
# disable fetching and building of tree-sitter grammars in the helix-term build.rs
|
||||||
HELIX_DISABLE_AUTO_GRAMMAR_BUILD = "1";
|
HELIX_DISABLE_AUTO_GRAMMAR_BUILD = "1";
|
||||||
# link languages and theme toml files since helix-term expects them (for tests)
|
# link languages and theme toml files since helix-term expects them (for tests)
|
||||||
|
@ -67,6 +68,13 @@
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
in
|
||||||
|
overridedAttrs
|
||||||
|
// (
|
||||||
|
pkgs.lib.optionalAttrs
|
||||||
|
(config ? makeWrapperArgs)
|
||||||
|
{inherit (config) makeWrapperArgs;}
|
||||||
|
);
|
||||||
};
|
};
|
||||||
shell = common: prev: {
|
shell = common: prev: {
|
||||||
packages =
|
packages =
|
||||||
|
@ -96,6 +104,30 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
defaultOutputs = outputs {};
|
||||||
|
makeOverridableHelix = system: old:
|
||||||
|
old
|
||||||
|
// {
|
||||||
|
override = args:
|
||||||
|
makeOverridableHelix
|
||||||
|
system
|
||||||
|
(outputs args).packages.${system}.helix;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
defaultOutputs
|
||||||
|
// {
|
||||||
|
packages =
|
||||||
|
nixpkgs.lib.mapAttrs
|
||||||
|
(
|
||||||
|
system: packages:
|
||||||
|
packages
|
||||||
|
// rec {
|
||||||
|
default = helix;
|
||||||
|
helix = makeOverridableHelix system packages.helix;
|
||||||
|
}
|
||||||
|
)
|
||||||
|
defaultOutputs.packages;
|
||||||
|
};
|
||||||
|
|
||||||
nixConfig = {
|
nixConfig = {
|
||||||
extra-substituters = ["https://helix.cachix.org"];
|
extra-substituters = ["https://helix.cachix.org"];
|
||||||
|
|
|
@ -4,6 +4,8 @@
|
||||||
runCommandLocal,
|
runCommandLocal,
|
||||||
runCommandNoCC,
|
runCommandNoCC,
|
||||||
yj,
|
yj,
|
||||||
|
includeGrammarIf ? _: true,
|
||||||
|
...
|
||||||
}: let
|
}: let
|
||||||
# HACK: nix < 2.6 has a bug in the toml parser, so we convert to JSON
|
# HACK: nix < 2.6 has a bug in the toml parser, so we convert to JSON
|
||||||
# before parsing
|
# before parsing
|
||||||
|
@ -102,12 +104,13 @@
|
||||||
runHook postFixup
|
runHook postFixup
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
grammarsToBuild = builtins.filter includeGrammarIf gitGrammars;
|
||||||
builtGrammars =
|
builtGrammars =
|
||||||
builtins.map (grammar: {
|
builtins.map (grammar: {
|
||||||
inherit (grammar) name;
|
inherit (grammar) name;
|
||||||
artifact = buildGrammar grammar;
|
artifact = buildGrammar grammar;
|
||||||
})
|
})
|
||||||
gitGrammars;
|
grammarsToBuild;
|
||||||
grammarLinks =
|
grammarLinks =
|
||||||
builtins.map (grammar: "ln -s ${grammar.artifact}/${grammar.name}.so $out/${grammar.name}.so")
|
builtins.map (grammar: "ln -s ${grammar.artifact}/${grammar.name}.so $out/${grammar.name}.so")
|
||||||
builtGrammars;
|
builtGrammars;
|
||||||
|
|
Loading…
Add table
Reference in a new issue