build(nix): add a way to override what grammars get built (#3141)

This commit is contained in:
Yusuf Bera Ertan 2022-07-27 17:52:07 +00:00 committed by GitHub
parent 2f1d3d0899
commit 85a5df0391
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 109 additions and 74 deletions

View file

@ -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"];

View file

@ -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;