A Nix-based framework for creating declarative and reproducible Jupyter environments with configurable kernels and extensions.
JupyterWith is a Nix-based framework for creating declarative and reproducible Jupyter environments. It solves the problem of inconsistent Jupyter setups by allowing users to define their entire environment—including JupyterLab, extensions, and kernels for multiple programming languages—using Nix expressions, ensuring the same environment works identically across different machines.
Data scientists, researchers, and developers who use Jupyter for interactive computing and want reproducible, conflict-free environments, especially those already familiar with or interested in Nix for package management.
Developers choose JupyterWith because it leverages Nix's powerful declarative package management to create fully reproducible Jupyter environments, eliminating dependency hell and ensuring consistency across teams and deployments, with support for a wide variety of programming language kernels.
Declarative and reproducible Jupyter environments - powered by Nix
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses Nix expressions to define Jupyter environments, ensuring identical setups across different machines, as highlighted in the key features for reproducible builds.
Supports kernels for over 15 programming languages including Python, R, Julia, and niche ones like Nix itself, as shown in the logo grid and features section.
Allows customization of JupyterLab with extensions to tailor workflows, mentioned in the key features and getting started instructions.
Seamlessly integrates with Nix's deterministic package management, eliminating dependency conflicts and enabling consistent environments, per the philosophy section.
Requires familiarity with Nix and its expression language, which can be complex for users not already invested in the Nix ecosystem, evident from the reliance on Nix commands in getting started.
Initial environment builds can be time-consuming due to Nix's deterministic builds, and setup involves multiple steps like initializing flakes, as shown in the getting started snippet.
Core documentation is hosted on an external website (jupyenv.io), which might require additional navigation and could be less accessible than in-repository docs, mentioned in the README under Documentation.