about summary refs log tree commit diff
path: root/pkgs/applications
diff options
context:
space:
mode:
authorTimo Kaufmann <timokau@zoho.com>2018-11-25 15:54:31 +0100
committerTimo Kaufmann <timokau@zoho.com>2018-11-25 15:54:31 +0100
commit98c94d3d7da8fd584f5419bba7eb6646b8862ac0 (patch)
tree63d5d80a74b1ec546f95d4013dbdffe9cd730202 /pkgs/applications
parente1ad1a0aa2ce6f9fd951d18181ba850ca8e74133 (diff)
downloadnixlib-98c94d3d7da8fd584f5419bba7eb6646b8862ac0.tar
nixlib-98c94d3d7da8fd584f5419bba7eb6646b8862ac0.tar.gz
nixlib-98c94d3d7da8fd584f5419bba7eb6646b8862ac0.tar.bz2
nixlib-98c94d3d7da8fd584f5419bba7eb6646b8862ac0.tar.lz
nixlib-98c94d3d7da8fd584f5419bba7eb6646b8862ac0.tar.xz
nixlib-98c94d3d7da8fd584f5419bba7eb6646b8862ac0.tar.zst
nixlib-98c94d3d7da8fd584f5419bba7eb6646b8862ac0.zip
sage: add jupyter notebook support
Fixes #48544.
Diffstat (limited to 'pkgs/applications')
-rw-r--r--pkgs/applications/science/math/sage/default.nix18
-rw-r--r--pkgs/applications/science/math/sage/sage.nix19
2 files changed, 33 insertions, 4 deletions
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; {