sage: add jupyter notebook support

Fixes #48544.
This commit is contained in:
Timo Kaufmann 2018-11-25 15:54:31 +01:00
parent e1ad1a0aa2
commit 98c94d3d7d
2 changed files with 33 additions and 4 deletions

View File

@ -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 # A bash script setting various environment variables to tell sage where
# the files its looking fore are located. Also see `sage-env`. # the files its looking fore are located. Also see `sage-env`.
env-locations = callPackage ./env-locations.nix { env-locations = callPackage ./env-locations.nix {
@ -158,6 +174,6 @@ let
in in
# A wrapper around sage that makes sure sage finds its docs (if they were build). # A wrapper around sage that makes sure sage finds its docs (if they were build).
callPackage ./sage.nix { callPackage ./sage.nix {
inherit sage-tests sage-with-env sagedoc; inherit sage-tests sage-with-env sagedoc jupyter-kernel-definition;
inherit withDoc; inherit withDoc;
} }

View File

@ -2,12 +2,23 @@
, makeWrapper , makeWrapper
, sage-tests , sage-tests
, sage-with-env , sage-with-env
, jupyter-kernel-definition
, jupyter-kernel
, sagedoc , sagedoc
, withDoc , 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 { stdenv.mkDerivation rec {
version = src.version; version = src.version;
name = "sage-${version}"; name = "sage-${version}";
@ -29,8 +40,9 @@ stdenv.mkDerivation rec {
mkdir -p "$out/bin" mkdir -p "$out/bin"
makeWrapper "${sage-with-env}/bin/sage" "$out/bin/sage" \ makeWrapper "${sage-with-env}/bin/sage" "$out/bin/sage" \
--set SAGE_DOC_SRC_OVERRIDE "${src}/src/doc" ${ --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; doInstallCheck = withDoc;
@ -44,6 +56,7 @@ stdenv.mkDerivation rec {
tests = sage-tests; tests = sage-tests;
doc = sagedoc; doc = sagedoc;
lib = sage-with-env.env.lib; lib = sage-with-env.env.lib;
kernelspec = jupyter-kernel-definition;
}; };
meta = with stdenv.lib; { meta = with stdenv.lib; {