mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-09-23 05:37:27 +03:00
nix-required-mounts: allow overriding the rendered config
This commit is contained in:
parent
55f54cc2c3
commit
075dd8b536
@ -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()
|
||||
|
@ -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 = {
|
||||
|
Loading…
Reference in New Issue
Block a user