A JupyterLab extension and Python package for writing unit tests against individual cells of linearly executed notebooks, such as report notebooks.
tweag/jupyenv
Nix-based framework for declarative, reproducible JupyterLab environments with configurable kernels and extensions.
- Stars
- 746
- Forks
- 151
- Open issues
- 56
- Last commit
- 7 days ago
What is it?
jupyenv is a Nix-based framework for defining Jupyter environments declaratively. An environment includes JupyterLab, which can be configured with extensions, the classic notebook interface, and a set of Jupyter kernels that you select and configure in a Nix definition.
Because the environment is described by Nix, the same definition produces the same setup on different machines, which makes notebooks easier to reproduce and share. The project offers a flake template so a new project can be started with a single command and launched with nix run, which opens JupyterLab in the browser.
Kernels are available for many languages, including Python, R, Julia, Haskell, Rust, Scala, Go, and TypeScript, along with several others. Documentation for kernels, extensions, and further setup is on the project website.
Key features
- 01Declarative Jupyter environment definitions built with Nix
- 02Reproducible setups that behave the same across machines
- 03Configurable JupyterLab extensions and the classic notebook interface
- 04Multiple language kernels, including Python, R, Julia, and Haskell
- 05Flake template for starting a new project with one command
Use cases
- Sharing notebooks that must run with the same language and library versions for others
- Setting up reproducible data science or research environments
- Trying out Jupyter kernels for several languages without manual installation
Quick start
- 1
Create a new project directory and enter it
mkdir my-project cd my-project - 2
Initialize the project with the flake template
nix flake init --template github:tweag/jupyenv - 3
Start the JupyterLab environment
nix run
Things to know
- Requires the Nix package manager, which is a separate install with its own learning curve.
In collections
Topics
FAQ
- What is jupyenv?
- Nix-based framework for declarative, reproducible JupyterLab environments with configurable kernels and extensions. jupyenv is a Nix-based framework for defining Jupyter environments declaratively. An environment includes JupyterLab, which can be configured with extensions, the classic notebook interface, and a set of Jupyter kernels that you select and configure in a Nix definition.
- Is jupyenv free to use? What license does it have?
- jupyenv is open source under the MIT license. Check the license terms before using it in commercial products.
- Is jupyenv still maintained?
- Actively maintained. The last commit to jupyenv was on Nov 1, 2026.
- What can I use jupyenv for?
- Sharing notebooks that must run with the same language and library versions for others Setting up reproducible data science or research environments Trying out Jupyter kernels for several languages without manual installation
- How do I install jupyenv?
- Create a new project directory and enter it: mkdir my-project cd my-project Initialize the project with the flake template: nix flake init --template github:tweag/jupyenv Start the JupyterLab environment: nix run
- Where can I get jupyenv?
- The source code and installation instructions are on GitHub: https://github.com/tweag/jupyenv
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
Ready-to-run Docker images bundling JupyterLab, Jupyter Notebook and common scientific Python tools for personal or team use.
Stores Jupyter notebooks as plain Markdown or Python, Julia, R scripts so they diff and version cleanly in Git.
Builds a git repository into a Jupyter-enabled Docker image based on the configuration files found in that repo.
An extensible, browser-based interactive computing environment that brings notebooks, terminals, editors and file browsing into one workspace.
A JupyterLab distribution that runs entirely in the browser, using WebAssembly-based Python kernels with no server required.