Synit: add dependencies

This commit is contained in:
Emery Hemingway 2023-11-25 19:19:38 +02:00
parent 509347cc85
commit a49d76f6c4
2 changed files with 26 additions and 13 deletions

View File

@ -1,8 +1,10 @@
{ lib, writeTextFile, toPreserves }:
{ name, description, daemon, daemonArgs, environment, directory
# Daemon will not be started until all elements of depends-on are asserted.
# Example: [ "<service-state <milestone network> up>" ]
# List of services that this configuration depends on.
, dependencies ? [ ]
# Daemon will not be started until all elements of depends-on are asserted.
# Example: [ "<service-state <milestone network> up>" ]
, depends-on ? [ ]
# Whether the daemon shall be declared as required.
, require-service ? true }:
@ -16,20 +18,30 @@ let
env = environment;
} // (lib.attrsets.optionalAttrs (directory != null) { dir = directory; });
serviceName = "<daemon ${name}>";
in writeTextFile {
name = "services-${name}";
destination = "/services/${name}.pr";
text = let daemonName = "<daemon ${name}>";
in ''
<metadata ${daemonName} { description: "${description}" }>
<daemon ${name} ${toPreserves processSpec}>
text = ''
<metadata ${serviceName} { description: "${description}" }>
''
+ (lib.strings.optionalString require-service ''
<require-service ${daemonName}>
'')
+ (lib.strings.optionalString require-service ''
<require-service ${serviceName}>
'')
+ (lib.strings.concatMapStrings (dep: ''
<depends-on ${daemonName} ${dep}>
'') depends-on);
+ (lib.strings.concatMapStrings (dep: ''
<depends-on ${serviceName} ${dep}>
'') depends-on)
+ (lib.strings.concatMapStrings (pkg: ''
<depends-on ${serviceName} ${pkg.serviceName}>
'') dependencies)
+ ''
<daemon ${name} ${toPreserves processSpec}>
'';
} // {
inherit serviceName;
}

View File

@ -6,7 +6,8 @@
let
generatedTargetSpecificArgs = {
inherit name description daemon daemonArgs environment directory;
inherit name description daemon daemonArgs environment directory
dependencies;
};
targetSpecificArgs = if builtins.isFunction overrides then