From 40804b0af1814c8d5ea1875283464673b7d3a28c Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender Date: Fri, 17 Jan 2020 15:36:29 +0100 Subject: Implement Jupyter Lab type in Tasker module Allows for convenient creation of shortcuts to Jupyter Lab sessions. As a bonus they are wrapped in Chromium App View instances and automatically terminated when required. --- module/tasker.nix | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'module') diff --git a/module/tasker.nix b/module/tasker.nix index 032027b..0987544 100644 --- a/module/tasker.nix +++ b/module/tasker.nix @@ -11,6 +11,23 @@ let #!/bin/sh exec ${pkgs.kitty}/bin/kitty -d ${dir} ${cmd} ''; + launchJupyterInDirectory = dir: env: '' + #!/usr/bin/env nix-shell + #!nix-shell ${builtins.unsafeDiscardStringContext env.drvPath} -i fish + + for port in (seq 9000 9100) + if not ss --listening --oneline --tcp --no-header | awk '{ split($4, port, ":"); print port[2]+0 }' | grep -q $port + set free_port $port + break + end + end + + set token (head /dev/urandom | tr -dc A-Za-z0-9 | head -c 40) + jupyter lab --no-browser --port=$free_port --NotebookApp.token=$token & + sleep 2 + ${pkgs.chromium}/bin/chromium --app="http://localhost:$free_port/?token=$token" + kill (jobs -lp) + ''; taskivations = pkgs.lib.mapAttrsToList (name: conf: let command = pkgs.writeTextFile { @@ -31,6 +48,8 @@ let python-console = launchCommandInDirectory "~/" '' nix-shell ${builtins.unsafeDiscardStringContext conf.environment.drvPath} --command jupyter-qtconsole ''; + + jupyter-lab = launchJupyterInDirectory conf.directory conf.environment; }; }; -- cgit v1.2.3