nix-config/hosts/uranus/jupyter-container.nix

36 lines
1.0 KiB
Nix
Raw Normal View History

2023-05-30 20:10:59 +02:00
{ pkgs, packages, bind-ip ? "0.0.0.0", bind-port ? 8080, ... }:
2023-05-30 16:00:35 +02:00
let
miniconda-alpine-dockerhub = pkgs.dockerTools.pullImage {
imageName = "continuumio/miniconda3";
imageDigest = "sha256:a4b665d2075d9bf4b2c5aa896c059439a0baa5538ca67589a673121c31b4c35d";
sha256 = "sha256-boIAZ8PaPckWLzYYTqrqMEL7HGbyl9grCJrXOpsBMhg=";
finalImageTag = "23.3.1-0";
finalImageName = "miniconda";
};
in
pkgs.dockerTools.buildImage {
name = "stateful-jupyterlab";
tag = "latest";
fromImage = miniconda-alpine-dockerhub;
2023-05-30 20:10:59 +02:00
runAsRoot =
2023-05-30 17:14:55 +02:00
let
entrypoint = pkgs.writeScriptBin "entrypoint.sh" ''
2023-05-30 17:18:49 +02:00
#!/bin/bash
2023-06-01 12:42:19 +02:00
conda install -c conda-forge ${packages} \
2023-05-30 17:14:55 +02:00
jupyterlab
2023-05-30 20:10:59 +02:00
jupyter-lab --ip=${bind-ip} --port=${toString bind-port} --no-browser --allow-root
2023-05-30 17:14:55 +02:00
'';
in
''
2023-05-30 20:10:59 +02:00
#!${pkgs.runtimeShell}
mkdir -p /workdir
cp ${entrypoint}/bin/entrypoint.sh /entrypoint.sh
'';
2023-05-30 16:00:35 +02:00
config = {
WorkingDir = "/workdir";
2023-05-30 17:14:55 +02:00
Entrypoint = "/entrypoint.sh";
2023-05-30 16:00:35 +02:00
};
}