summary refs log tree commit diff
path: root/pkgs/applications/editors/jupyter-kernels/octave/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/editors/jupyter-kernels/octave/default.nix')
-rw-r--r--pkgs/applications/editors/jupyter-kernels/octave/default.nix60
1 files changed, 60 insertions, 0 deletions
diff --git a/pkgs/applications/editors/jupyter-kernels/octave/default.nix b/pkgs/applications/editors/jupyter-kernels/octave/default.nix
new file mode 100644
index 00000000000..9db38d14448
--- /dev/null
+++ b/pkgs/applications/editors/jupyter-kernels/octave/default.nix
@@ -0,0 +1,60 @@
+{ lib
+, stdenv
+, callPackage
+, runCommand
+, makeWrapper
+, octave
+, imagemagick
+, python3
+}:
+
+# To test:
+# $(nix-build -E 'with import <nixpkgs> {}; jupyter.override { definitions = { octave = octave-kernel.definition; }; }')/bin/jupyter-notebook
+
+let
+  kernel = callPackage ./kernel.nix {
+    python3Packages = python3.pkgs;
+  };
+
+in
+
+rec {
+  launcher = runCommand "octave-kernel-launcher" {
+    inherit octave;
+    python = python3.withPackages (ps: [ ps.traitlets ps.jupyter_core ps.ipykernel ps.metakernel kernel ]);
+    buildInputs = [ makeWrapper ];
+  } ''
+    mkdir -p $out/bin
+
+    makeWrapper $python/bin/python $out/bin/octave-kernel \
+      --add-flags "-m octave_kernel" \
+      --suffix PATH : $octave/bin
+  '';
+
+  sizedLogo = size: stdenv.mkDerivation {
+    name = ''octave-logo-${octave.version}-${size}x${size}.png'';
+
+    src = octave.src;
+
+    buildInputs = [ imagemagick ];
+
+    dontConfigure = true;
+    dontInstall = true;
+
+    buildPhase = ''
+      convert ./libgui/src/icons/logo.png -resize ${size}x${size} $out
+    '';
+  };
+
+  definition = {
+    displayName = "Octave";
+    argv = [
+      "${launcher}/bin/octave-kernel"
+      "-f"
+      "{connection_file}"
+    ];
+    language = "octave";
+    logo32 = sizedLogo "32";
+    logo64 = sizedLogo "64";
+  };
+}