{ symlinkJoin, writeTextFile, socat, dash, hectic, curl, gawk, jq, inetutils }: let shell = "${dash}/bin/dash"; bashOptions = [ "errexit" "nounset" ]; base64 = hectic.writeShellApplication { inherit shell bashOptions; name = "base64"; runtimeInputs = [ ]; text = builtins.readFile ./base64.sh; }; probe = hectic.writeShellApplication { inherit shell bashOptions; name = "probe"; runtimeInputs = [ socat dash router ]; text = builtins.readFile ./probe.sh; }; router = hectic.writeShellApplication { inherit shell bashOptions; name = "router"; runtimeInputs = [ base64 gawk ]; text = '' ${builtins.readFile ./log.sh} ${builtins.readFile ./colors.sh} ${builtins.readFile ./router.sh} ''; }; watcher = hectic.writeShellApplication { inherit shell bashOptions; name = "watcher"; runtimeInputs = [ curl jq inetutils ]; text = '' ${builtins.readFile ./log.sh} ${builtins.readFile ./colors.sh} ${builtins.readFile ./watcher.sh} ''; }; in symlinkJoin { name = "sentinèlla"; paths = [ probe watcher ]; }