{ description = "JupyterLab Flake"; inputs = { jupyterWith.url = "github:tweag/jupyterWith"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, jupyterWith, flake-utils, }: flake-utils.lib.eachSystem ["x86_64-linux" "x86_64-darwin"] ( system: let pkgs = import nixpkgs { system = system; overlays = nixpkgs.lib.attrValues jupyterWith.overlays; }; prince = pkgs.python3Packages.buildPythonPackage rec { name = "prince"; src = pkgs.fetchFromGitHub { owner = "MaxHalford"; repo = "prince"; rev = "bd5b29fafe853579c9d41e954caa4504d585665d"; sha256 = "X7gpHvy2cfIKMrfSGLZxmJsytLbe/VZd27VsYIyEoTI="; }; propagatedBuildInputs = with pkgs.python3Packages; [matplotlib pandas numpy scipy scikit-learn]; dontCheck = true; dontUseSetuptoolsCheck = true; }; iPython = pkgs.kernels.iPythonWith { name = "Python-env"; packages = p: with p; [sympy numpy pandas prince]; ignoreCollisions = true; }; jupyterEnvironment = pkgs.jupyterlabWith { kernels = [iPython]; }; in rec { apps.jupterlab = { type = "app"; program = "${jupyterEnvironment}/bin/jupyter-lab"; }; apps.default = apps.jupterlab; devShell = jupyterEnvironment.env; } ); }