nix-processmgmt-services/service-containers-agnostic/supervisord/extendable.nix

37 lines
1.0 KiB
Nix

{supervisordConstructorFun, lib, dysnomia, libDir}:
{ instanceSuffix ? ""
, instanceName ? "supervisord${instanceSuffix}"
, containerName ? "supervisord-program${instanceSuffix}"
, inetHTTPServerPort ? 9001
, postInstall ? ""
, type ? null
, properties ? {}
}:
let
supervisordTargetDir = "${libDir}/${instanceName}/conf.d";
pkg = supervisordConstructorFun {
inherit instanceName inetHTTPServerPort;
postInstall = ''
# Add Dysnomia container configuration file for Supervisord
mkdir -p $out/etc/dysnomia/containers
cat > $out/etc/dysnomia/containers/${containerName} <<EOF
supervisordTargetDir="${supervisordTargetDir}"
EOF
# Copy the Dysnomia module that manages a Supervisord program
mkdir -p $out/libexec/dysnomia
ln -s ${dysnomia}/libexec/dysnomia/supervisord-program $out/libexec/dysnomia
'';
};
in
{
name = instanceName;
inherit pkg supervisordTargetDir;
providesContainer = containerName;
} // lib.optionalAttrs (type != null) {
inherit type;
} // properties