base16-schemes: unstable-2024-06-21 -> unstable-2024-11-12
[NixPkgs.git] / pkgs / by-name / ni / nix-required-mounts / closure.nix
blob3e361114bc4cbb426460e6cccd74b70cfcdead47
1 # Use exportReferencesGraph to capture the possible dependencies of the
2 # drivers (e.g. libc linked through DT_RUNPATH) and ensure they are mounted
3 # in the sandbox as well. In practice, things seemed to have worked without
4 # this as well, but we go with the safe option until we understand why.
7   lib,
8   runCommand,
9   python3Packages,
10   allowedPatterns,
12 runCommand "allowed-patterns.json"
13   {
14     nativeBuildInputs = [ python3Packages.python ];
15     exportReferencesGraph = builtins.concatMap (
16       name:
17       builtins.concatMap (
18         path:
19         let
20           prefix = "${builtins.storeDir}/";
21           # Has to start with a letter: https://github.com/NixOS/nix/blob/516e7ddc41f39ff939b5d5b5dc71e590f24890d4/src/libstore/build/local-derivation-goal.cc#L568
22           exportName = ''references-${lib.strings.removePrefix prefix "${path}"}'';
23           isStorePath = lib.isStorePath path && (lib.hasPrefix prefix "${path}");
24         in
25         lib.optionals isStorePath [
26           exportName
27           path
28         ]
29       ) allowedPatterns.${name}.paths
30     ) (builtins.attrNames allowedPatterns);
31     env.storeDir = "${builtins.storeDir}/";
32     shallowConfig = builtins.toJSON allowedPatterns;
33     passAsFile = [ "shallowConfig" ];
34   }
35   ''
36     python ${./scripts/nix_required_mounts_closure.py}
37   ''