diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..2e49f4c --- /dev/null +++ b/default.nix @@ -0,0 +1,25 @@ +{ + mkShellNoCC, + python3, + mkShellHook, + kernels ? [], + extraPackages ? [], + extraPythonPackages ? [], +}: +mkShellNoCC { + nativeBuildInputs = + [ + (python3.withPackages (ps: + with ps; + [ + jupyterlab + jupyterlab-git + nbdime + nbconvert + python-lsp-server + ] + ++ extraPythonPackages)) + ] + ++ extraPackages; + shellHook = mkShellHook kernels; +} diff --git a/flake.nix b/flake.nix index a447026..d22986e 100644 --- a/flake.nix +++ b/flake.nix @@ -15,12 +15,14 @@ system = "x86_64-linux"; pkgs = import nixpkgs {inherit system;}; in { - packages.${system} = { + lib.${system} = { + mkIpythonKernel = pkgs.callPackage ./lib/ipykernel.nix {}; + mkShellHook = import ./lib/shellhook.nix; + }; + packages.${system} = with self.lib.${system}; { poetry2nix = poetry2nix.lib.mkPoetry2Nix {inherit pkgs;}; catppuccin_jupyterlab = import ./catppuccin_jupyterlab/default.nix; - mkIpythonKernel = attrs: (pkgs.callPackage ./ipykernel.nix attrs); - mkJupyterShell = attrs: (pkgs.callPackage ./jupyter.nix attrs); - default = self.packages.${system}.mkJupyterShell; + default = pkgs.callPackage ./default.nix {inherit mkShellHook;}; }; }; } diff --git a/ipykernel.nix b/ipykernel.nix deleted file mode 100644 index d6643a0..0000000 --- a/ipykernel.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ - writeTextFile, - name, - pyenv, - ... -}: let - interpreter = pyenv.interpreter; # TODO ensure ipykernel package installed somehow... -in - writeTextFile { - name = "${name}-ipykernel"; - destination = "/kernels/${name}/kernel.json"; - text = builtins.toJSON { - display_name = name; - argv = [ - "${interpreter}" - "-m" - "ipykernel_launcher" - "-f" - "{connection_file}" - ]; - language = "python"; - metadata = {debugger = true;}; - }; - } diff --git a/jupyter.nix b/jupyter.nix deleted file mode 100644 index 9346594..0000000 --- a/jupyter.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ - mkShellNoCC, - python3, - kernels ? [], - extraPackages ? (ps: []), -}: -mkShellNoCC { - nativeBuildInputs = [ - (python3.withPackages (ps: - with ps; - [ - jupyterlab - jupyterlab-git - nbdime - nbconvert - python-lsp-server - (ps.callPackage ./catppuccin_jupyterlab {}) - ] - ++ (extraPackages ps))) - ]; - shellHook = with builtins; let - kernelString = foldl' (x: y: ":" + (toString y) + x) "" kernels; - pathString = substring 1 (stringLength kernelString) kernelString; - in "export JUPYTER_PATH=${pathString}"; -} diff --git a/lib/ipykernel.nix b/lib/ipykernel.nix new file mode 100644 index 0000000..06a0e7a --- /dev/null +++ b/lib/ipykernel.nix @@ -0,0 +1,24 @@ +{pkgs, ...}: ( + { + name, + pyenv, + }: let + interpreter = pyenv.interpreter; # TODO ensure ipykernel package installed somehow... + in + pkgs.writeTextFile { + name = "${name}-ipykernel"; + destination = "/kernels/${name}/kernel.json"; + text = builtins.toJSON { + display_name = name; + argv = [ + "${interpreter}" + "-m" + "ipykernel_launcher" + "-f" + "{connection_file}" + ]; + language = "python"; + metadata = {debugger = true;}; + }; + } +) diff --git a/lib/shellhook.nix b/lib/shellhook.nix new file mode 100644 index 0000000..c9bff00 --- /dev/null +++ b/lib/shellhook.nix @@ -0,0 +1,5 @@ +kernels: +with builtins; let + kernelString = foldl' (x: y: ":" + (toString y) + x) "" kernels; + pathString = substring 1 (stringLength kernelString) kernelString; +in "export JUPYTER_PATH=${pathString}" diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..635ad06 --- /dev/null +++ b/shell.nix @@ -0,0 +1,16 @@ +{pkgs ? import {}, ...}: +with pkgs; + mkShellNoCC { + nativeBuildInputs = [ + (python3.withPackages (ps: + with ps; [ + jupyterlab + jupyterlab-git + nbdime + nbconvert + python-lsp-server + (ps.callPackage ./catppuccin_jupyterlab {}) + ])) + ]; + shellHook = import ./shellhook.nix {}; + }