biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / applications / editors / jupyter-kernels / clojupyter / default.nix
blob2f06cf3757c9e742300b658ed44d03661c9e0a96
1 { pkgs
2 , stdenv
3 , lib
4 , jre
5 , fetchFromGitHub
6 , writeShellScript
7 , runCommand
8 , imagemagick
9 }:
11 # Jupyter console:
12 # nix run --impure --expr 'with import <nixpkgs> {}; jupyter-console.withSingleKernel clojupyter.definition'
14 # Jupyter notebook:
15 # nix run --impure --expr 'with import <nixpkgs> {}; jupyter.override { definitions.clojure = clojupyter.definition; }'
17 let
18   cljdeps = import ./deps.nix { inherit pkgs; };
19   classp  = cljdeps.makeClasspaths {};
21   shellScript = writeShellScript "clojupyter" ''
22     ${jre}/bin/java -cp ${classp} clojupyter.kernel.core "$@"
23   '';
25   pname = "clojupyter";
26   version = "0.3.3";
28   meta = with lib; {
29     description = "Jupyter kernel for Clojure";
30     homepage = "https://github.com/clojupyter/clojupyter";
31     sourceProvenance = with sourceTypes; [ binaryBytecode ];  # deps from maven
32     license = licenses.mit;
33     maintainers = with maintainers; [ thomasjm ];
34     platforms = jre.meta.platforms;
35   };
37   sizedLogo = size: stdenv.mkDerivation {
38     name = "clojupyter-logo-${size}x${size}.png";
40     src = fetchFromGitHub {
41       owner = "clojupyter";
42       repo = "clojupyter";
43       rev = version;
44       sha256 = "sha256-BCzcPnLSonm+ELFU4JIIzLPlVnP0VzlrRSGxOd/LFow=";
45     };
47     buildInputs = [ imagemagick ];
49     dontConfigure = true;
50     dontInstall = true;
52     buildPhase = ''
53       convert ./resources/clojupyter/assets/logo-64x64.png -resize ${size}x${size} $out
54     '';
56     inherit meta;
57   };
61 rec {
62   launcher = runCommand "clojupyter" { inherit pname version meta shellScript; } ''
63     mkdir -p $out/bin
64     ln -s $shellScript $out/bin/clojupyter
65   '';
67   definition = {
68     displayName = "Clojure";
69     argv = [
70       "${launcher}/bin/clojupyter"
71       "{connection_file}"
72     ];
73     language = "clojure";
74     logo32 = sizedLogo "32";
75     logo64 = sizedLogo "64";
76   };