biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / applications / editors / jupyter-kernels / octave / default.nix
blob88bc1b2803bbd349fc91e41d7790c75467e822ad
1 { stdenv
2 , callPackage
3 , runCommand
4 , makeWrapper
5 , octave
6 , imagemagick
7 , python3
8 }:
10 # Jupyter console:
11 # nix run --impure --expr 'with import <nixpkgs> {}; jupyter-console.withSingleKernel octave-kernel.definition'
13 # Jupyter notebook:
14 # nix run --impure --expr 'with import <nixpkgs> {}; jupyter.override { definitions.octave = octave-kernel.definition; }'
16 let
17   kernel = callPackage ./kernel.nix {
18     python3Packages = python3.pkgs;
19   };
23 rec {
24   launcher = runCommand "octave-kernel-launcher" {
25     inherit octave;
26     python = python3.withPackages (ps: [ ps.traitlets ps.jupyter-core ps.ipykernel ps.metakernel kernel ]);
27     nativeBuildInputs = [ makeWrapper ];
28   } ''
29     mkdir -p $out/bin
31     makeWrapper $python/bin/python $out/bin/octave-kernel \
32       --add-flags "-m octave_kernel" \
33       --suffix PATH : $octave/bin
34   '';
36   sizedLogo = size: stdenv.mkDerivation {
37     pname = "octave-logo-${size}x${size}.png";
38     inherit (octave) version;
40     src = octave.src;
42     buildInputs = [ imagemagick ];
44     dontConfigure = true;
45     dontInstall = true;
47     buildPhase = ''
48       convert ./libgui/src/icons/octave/128x128/logo.png -resize ${size}x${size} $out
49     '';
50   };
52   definition = {
53     displayName = "Octave";
54     argv = [
55       "${launcher}/bin/octave-kernel"
56       "-f"
57       "{connection_file}"
58     ];
59     language = "octave";
60     logo32 = sizedLogo "32";
61     logo64 = sizedLogo "64";
62   };