Reproducible Jupyter Setup

This repository supports controlled static analysis only. The notebooks do not execute attacker-provided code, read raw environment captures, or contact incident infrastructure.

NixOS and Nushell

cd ~/src/metaplay-fake-interview-supply-chain-incident
nix develop
uv sync
source .venv/bin/activate.nu
deno jupyter --install
jupyter lab

deno jupyter --install is a one-time user-level kernel registration. It is explicit rather than part of shell activation because it writes outside the repository.

The flake exports the compiler runtime library through LD_LIBRARY_PATH, which is the NixOS equivalent of:

let gcclib = (nix eval --raw nixpkgs#stdenv.cc.cc.lib)
$env.LD_LIBRARY_PATH = $"($gcclib)/lib"

The Python environment is managed by uv from pyproject.toml. The first intentional uv sync creates uv.lock; commit that lock after review. Do not use the attacker project as a Python or JavaScript dependency.

Daily Use

nix develop
uv sync
source .venv/bin/activate.nu
jupyter lab

After uv.lock exists, use uv sync --frozen for repeatable daily setup.

Inspect kernels:

jupyter kernelspec list

Rebuild and render reviewed notebooks:

make notebooks
make check
make render

Safety Boundary