From 7730985ee61b9ae6572b743f006a039a873c2df9 Mon Sep 17 00:00:00 2001 From: James Andariese Date: Sun, 4 Aug 2024 01:47:08 -0500 Subject: [PATCH] wip --- docker.nix | 58 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 51 insertions(+), 7 deletions(-) diff --git a/docker.nix b/docker.nix index a79ea5e..7932ab6 100644 --- a/docker.nix +++ b/docker.nix @@ -1,20 +1,64 @@ -{ config, pkgs, ...}: - +{ config, pkgs, lib, ...}: let name = "node-red"; +packages = + with pkgs; + with nodePackages; + with dockerTools; +[ + less + bashInteractive + coreutils + nodejs + findutils + npm + node-red + usrBinEnv + binSh + caCertificates + fakeNss + #ungoogled-chromium +]; entrypoint = pkgs.writeShellApplication { name = "entrypoint"; - runtimeInputs = with pkgs; with nodePackages; [ - node-red - #ungoogled-chromium - ]; + runtimeInputs = packages; text = '' - node-red -u "''${DATA-/data}" -s "''${SETTINGS-/data/settings.js}" + DATA="''${DATA-/data}" + cd "$DATA" + node-red -u "$DATA" -s "''${SETTINGS-/data/settings.js}" ''; }; +linkPackageToRoot = p: '' + for wbin in bin sbin;do + for f in ${p}/$wbin/*;do + if [ -x "$f" ];then + ln -sf "$f" "$wbin"/ + fi + done + done +''; in pkgs.dockerTools.streamLayeredImage { inherit name; + contents = packages; config.Cmd = [ "${entrypoint}/bin/entrypoint" ]; + config.Workdir = "/data"; + config.Env = with pkgs; [ "HOME=/data" ]; + + fakeRootCommands = '' + # ${pkgs.runtimeShell} + #mkdir -p /tmp + #chmod 1777 /tmp + #${pkgs.dockerTools.shadowSetup} + #groupadd -r node-red + #useradd -r -g node-red node-red + #mkdir -p /data + #chown -R node-red:node-red /data + #chmod -R 750 /data + ''; + extraCommands = '' + find / > files-that-existed-at-extraCommands-time.txt || true + ${pkgs.lib.strings.concatStringsSep "\n" (map linkPackageToRoot packages)} + ''; }