From 075dd8b536c0a0765bdafb4926187349bd162b52 Mon Sep 17 00:00:00 2001 From: Someone Serge Date: Mon, 20 Nov 2023 01:17:42 +0000 Subject: [PATCH] nix-required-mounts: allow overriding the rendered config --- .../ni/nix-required-mounts/nix_required_mounts.py | 14 ++++++-------- pkgs/by-name/ni/nix-required-mounts/package.nix | 9 ++++----- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/pkgs/by-name/ni/nix-required-mounts/nix_required_mounts.py b/pkgs/by-name/ni/nix-required-mounts/nix_required_mounts.py index 029740e4b80c..388468f7894e 100644 --- a/pkgs/by-name/ni/nix-required-mounts/nix_required_mounts.py +++ b/pkgs/by-name/ni/nix-required-mounts/nix_required_mounts.py @@ -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() diff --git a/pkgs/by-name/ni/nix-required-mounts/package.nix b/pkgs/by-name/ni/nix-required-mounts/package.nix index 8e2611552d05..3edc40c06245 100644 --- a/pkgs/by-name/ni/nix-required-mounts/package.nix +++ b/pkgs/by-name/ni/nix-required-mounts/package.nix @@ -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 = {