Merge pull request #164048 from hqurve/jupyter-extra-paths

Jupyter kernel: link extra paths and fix missing docs in sagemath jupyter
This commit is contained in:
7c6f434c 2022-07-01 16:43:02 +00:00 committed by GitHub
commit 95d4ce2175
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 21 additions and 13 deletions

View file

@ -143,6 +143,9 @@ in {
language = "python"; language = "python";
logo32 = "''${env.sitePackages}/ipykernel/resources/logo-32x32.png"; logo32 = "''${env.sitePackages}/ipykernel/resources/logo-32x32.png";
logo64 = "''${env.sitePackages}/ipykernel/resources/logo-64x64.png"; logo64 = "''${env.sitePackages}/ipykernel/resources/logo-64x64.png";
extraPaths = {
"cool.txt" = pkgs.writeText "cool" "cool content";
};
}; };
} }
''; '';

View file

@ -56,5 +56,14 @@ with lib;
Path to 64x64 logo png. Path to 64x64 logo png.
''; '';
}; };
extraPaths = mkOption {
type = types.attrsOf types.path;
default = { };
example = literalExpression ''"{ examples = ''${env.sitePack}/IRkernel/kernelspec/kernel.js"; }'';
description = ''
Extra paths to link in kernel directory
'';
};
}; };
} }

View file

@ -39,26 +39,22 @@ in
${concatStringsSep "\n" (mapAttrsToList (kernelName: unfilteredKernel: ${concatStringsSep "\n" (mapAttrsToList (kernelName: unfilteredKernel:
let let
allowedKernelKeys = ["argv" "displayName" "language" "interruptMode" "env" "metadata" "logo32" "logo64"]; allowedKernelKeys = ["argv" "displayName" "language" "interruptMode" "env" "metadata" "logo32" "logo64" "extraPaths"];
kernel = filterAttrs (n: v: (any (x: x == n) allowedKernelKeys)) unfilteredKernel; kernel = filterAttrs (n: v: (any (x: x == n) allowedKernelKeys)) unfilteredKernel;
config = builtins.toJSON ( config = builtins.toJSON (
kernel kernel
// {display_name = if (kernel.displayName != "") then kernel.displayName else kernelName;} // {display_name = if (kernel.displayName != "") then kernel.displayName else kernelName;}
// (optionalAttrs (kernel ? interruptMode) { interrupt_mode = kernel.interruptMode; }) // (optionalAttrs (kernel ? interruptMode) { interrupt_mode = kernel.interruptMode; })
); );
logo32 = extraPaths = kernel.extraPaths or {}
if (kernel.logo32 != null) // lib.optionalAttrs (kernel.logo32 != null) { "logo-32x32.png" = kernel.logo32; }
then "ln -s ${kernel.logo32} 'kernels/${kernelName}/logo-32x32.png';" // lib.optionalAttrs (kernel.logo64 != null) { "logo-64x64.png" = kernel.logo64; }
else ""; ;
logo64 = linkExtraPaths = lib.mapAttrsToList (name: value: "ln -s ${value} 'kernels/${kernelName}/${name}';") extraPaths;
if (kernel.logo64 != null)
then "ln -s ${kernel.logo64} 'kernels/${kernelName}/logo-64x64.png';"
else "";
in '' in ''
mkdir 'kernels/${kernelName}'; mkdir 'kernels/${kernelName}';
echo '${config}' > 'kernels/${kernelName}/kernel.json'; echo '${config}' > 'kernels/${kernelName}/kernel.json';
${logo32} ${lib.concatStringsSep "\n" linkExtraPaths}
${logo64}
'') definitions)} '') definitions)}
mkdir $out mkdir $out

View file

@ -9,7 +9,7 @@
# is always preferred, see `sage-src.nix` for that. # is always preferred, see `sage-src.nix` for that.
let let
inherit (pkgs) symlinkJoin callPackage nodePackages; inherit (pkgs) symlinkJoin callPackage nodePackages lib;
python3 = pkgs.python3.override { python3 = pkgs.python3.override {
packageOverrides = self: super: { packageOverrides = self: super: {
@ -46,7 +46,7 @@ let
# just one 16x16 logo is available # just one 16x16 logo is available
logo32 = "${sage-src}/src/doc/common/themes/sage/static/sageicon.png"; logo32 = "${sage-src}/src/doc/common/themes/sage/static/sageicon.png";
logo64 = "${sage-src}/src/doc/common/themes/sage/static/sageicon.png"; logo64 = "${sage-src}/src/doc/common/themes/sage/static/sageicon.png";
}; } // lib.optionalAttrs withDoc { extraPaths = { "doc" = "${sagedoc}/share/doc/sage/html/en"; }; };
jupyter-kernel-specs = pkgs.jupyter-kernel.create { jupyter-kernel-specs = pkgs.jupyter-kernel.create {
definitions = pkgs.jupyter-kernel.default // { definitions = pkgs.jupyter-kernel.default // {