Data science should be reproducible. Nix is pretty good at reproducibility. How do we combine the two? jupyterWith is a convenient Nix library for this purpose. It can create Jupyter Lab environments and declaratively configure Jupyter kernels, including all the language libraries used.
Is a Literate Programming tool, mostly for Python but theoretically supports any language. Execution of code is implemented via Jupyter kernels. Code, comments and code section outputs are stored in so-called notebooks.