40 lines
826 B
Nix
40 lines
826 B
Nix
|
{ pkgs, config, lib, ... }:
|
||
|
with lib;
|
||
|
let
|
||
|
cfg = config.eboskma.livebook;
|
||
|
in
|
||
|
{
|
||
|
options.eboskma.livebook = {
|
||
|
enable = mkEnableOption "Start a livebook container";
|
||
|
dataDir = mkOption {
|
||
|
description = "Livebook data directory";
|
||
|
type = types.path;
|
||
|
};
|
||
|
userMapping = mkOption {
|
||
|
description = "User to run the container as";
|
||
|
type = types.str;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
config = mkIf (cfg.enable) {
|
||
|
eboskma.docker.enable = true;
|
||
|
|
||
|
virtualisation.oci-containers.containers = {
|
||
|
livebook = {
|
||
|
autoStart = true;
|
||
|
image = "livebook/livebook";
|
||
|
ports = [
|
||
|
"8080:8080"
|
||
|
];
|
||
|
volumes = [
|
||
|
"${cfg.dataDir}:/data"
|
||
|
];
|
||
|
extraOptions = [
|
||
|
"--pull=always"
|
||
|
"--user=${cfg.userMapping}"
|
||
|
];
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
}
|