nix-required-mounts: allow overriding the rendered config

This commit is contained in:
Someone Serge 2023-11-20 01:17:42 +00:00
parent 55f54cc2c3
commit 075dd8b536
2 changed files with 10 additions and 13 deletions

View File

@ -26,15 +26,14 @@ class Pattern(TypedDict):
unsafeFollowSymlinks: bool
class HookConfig(TypedDict):
nixExe: str
allowedPatterns: Dict[str, Pattern]
AllowedPatterns: TypeAlias = Dict[str, Pattern]
parser = ArgumentParser("pre-build-hook")
parser.add_argument("derivation_path")
parser.add_argument("sandbox_path", nargs="?")
parser.add_argument("--config", type=Path)
parser.add_argument("--patterns", type=Path, required=True)
parser.add_argument("--nix-exe", type=Path, required=True)
parser.add_argument(
"--issue-command",
choices=("always", "conditional", "never"),
@ -72,8 +71,8 @@ def entrypoint():
args = parser.parse_args()
drv_path = args.derivation_path
with open(args.config, "r") as f:
config = json.load(f)
with open(args.patterns, "r") as f:
allowed_patterns = json.load(f)
if not Path(drv_path).exists():
print(
@ -85,7 +84,7 @@ def entrypoint():
proc = subprocess.run(
[
config["nixExe"],
args.nix_exe,
"show-derivation",
drv_path,
],
@ -108,7 +107,6 @@ def entrypoint():
return
[canon_drv_path] = parsed_drv.keys()
allowed_patterns = config["allowedPatterns"]
known_features = set(
chain.from_iterable(
pattern["onFeatures"] for pattern in allowed_patterns.values()

View File

@ -1,5 +1,6 @@
{ addOpenGLRunpath
, cmake
, allowedPatternsPath ? (formats.json { }).generate "patterns.json" allowedPatterns
, allowedPatterns ? rec {
# This config is just an example.
# When the hook observes either of the following requiredSystemFeatures:
@ -25,10 +26,6 @@
let
confPath = (formats.json { }).generate "config.py" {
inherit allowedPatterns;
nixExe = lib.getExe nix;
};
attrs = builtins.fromTOML (builtins.readFile ./pyproject.toml);
pname = attrs.project.name;
inherit (attrs.project) version;
@ -47,7 +44,9 @@ python3Packages.buildPythonApplication
];
postFixup = ''
wrapProgram $out/bin/${pname} --add-flags "--config ${confPath}"
wrapProgram $out/bin/${pname} \
--add-flags "--patterns ${allowedPatternsPath}" \
--add-flags "--nix-exe ${lib.getExe nix}"
'';
passthru = {