diff --git a/pkgs/applications/science/math/sage/default.nix b/pkgs/applications/science/math/sage/default.nix index fda827696d3d..6403b649af49 100644 --- a/pkgs/applications/science/math/sage/default.nix +++ b/pkgs/applications/science/math/sage/default.nix @@ -39,6 +39,22 @@ let }; }; + jupyter-kernel-definition = { + displayName = "SageMath ${sage-src.version}"; + argv = [ + "${sage-with-env}/bin/sage" # FIXME which sage + "--python" + "-m" + "sage.repl.ipython_kernel" + "-f" + "{connection_file}" + ]; + language = "sagemath"; + # just one 16x16 logo is available + logo32 = "${sage-src}/doc/common/themes/sage/static/sageicon.png"; + logo64 = "${sage-src}/doc/common/themes/sage/static/sageicon.png"; + }; + # A bash script setting various environment variables to tell sage where # the files its looking fore are located. Also see `sage-env`. env-locations = callPackage ./env-locations.nix { @@ -158,6 +174,6 @@ let in # A wrapper around sage that makes sure sage finds its docs (if they were build). callPackage ./sage.nix { - inherit sage-tests sage-with-env sagedoc; + inherit sage-tests sage-with-env sagedoc jupyter-kernel-definition; inherit withDoc; } diff --git a/pkgs/applications/science/math/sage/sage.nix b/pkgs/applications/science/math/sage/sage.nix index ba8fc095a67e..ac255643a348 100644 --- a/pkgs/applications/science/math/sage/sage.nix +++ b/pkgs/applications/science/math/sage/sage.nix @@ -2,12 +2,23 @@ , makeWrapper , sage-tests , sage-with-env +, jupyter-kernel-definition +, jupyter-kernel , sagedoc , withDoc }: -# A wrapper that makes sure sage finds its docs (if they were build). +# A wrapper that makes sure sage finds its docs (if they were build) and the +# jupyter kernel spec. +let + # generate kernel spec + default kernels + kernel-specs = jupyter-kernel.create { + definitions = jupyter-kernel.default // { + sagemath = jupyter-kernel-definition; + }; + }; +in stdenv.mkDerivation rec { version = src.version; name = "sage-${version}"; @@ -29,8 +40,9 @@ stdenv.mkDerivation rec { mkdir -p "$out/bin" makeWrapper "${sage-with-env}/bin/sage" "$out/bin/sage" \ --set SAGE_DOC_SRC_OVERRIDE "${src}/src/doc" ${ - stdenv.lib.optionalString withDoc "--set SAGE_DOC_OVERRIDE ${sagedoc}/share/doc/sage" - } + stdenv.lib.optionalString withDoc "--set SAGE_DOC_OVERRIDE ${sagedoc}/share/doc/sage" + } \ + --prefix JUPYTER_PATH : "${kernel-specs}" ''; doInstallCheck = withDoc; @@ -44,6 +56,7 @@ stdenv.mkDerivation rec { tests = sage-tests; doc = sagedoc; lib = sage-with-env.env.lib; + kernelspec = jupyter-kernel-definition; }; meta = with stdenv.lib; {