add script to download linux kernel configs from nix
[kconfig-hardened-check.git] / contrib / get-nix-kconfig.py
1 #!/usr/bin/env python
2
3 import json
4 import os
5 import shutil
6 import subprocess
7 import sys
8 from tempfile import TemporaryDirectory
9
10
11 def main() -> None:
12     proc = subprocess.run(
13         ["nix", "search", "-u", "--json", "^nixpkgs.linux_"], capture_output=True
14     )
15     data = json.loads(proc.stdout)
16     with TemporaryDirectory() as temp:
17         for pkg in data.keys():
18             symlink = os.path.join(temp, pkg)
19             res = subprocess.run(["nix", "build", f"{pkg}.configfile", "-o", symlink])
20             if res.returncode != 0:
21                 print(f"failed to get configuration for {pkg}", file=sys.stderr)
22                 continue
23             name = f"{pkg.replace('.', '-')}-config"
24             with open(name, "w") as dst, open(symlink) as src:
25                 shutil.copyfileobj(src, dst)
26
27
28 if __name__ == "__main__":
29     main()