systemd: add support for upholds and upheldBy
This commit is contained in:
parent
db19b7f939
commit
74eeb75af1
|
@ -242,7 +242,7 @@ in rec {
|
||||||
ln -sfn '${name}' $out/'${name2}'
|
ln -sfn '${name}' $out/'${name2}'
|
||||||
'') (unit.aliases or [])) units)}
|
'') (unit.aliases or [])) units)}
|
||||||
|
|
||||||
# Create .wants and .requires symlinks from the wantedBy and
|
# Create .wants, .upholds and .requires symlinks from the wantedBy, upheldBy and
|
||||||
# requiredBy options.
|
# requiredBy options.
|
||||||
${concatStrings (mapAttrsToList (name: unit:
|
${concatStrings (mapAttrsToList (name: unit:
|
||||||
concatMapStrings (name2: ''
|
concatMapStrings (name2: ''
|
||||||
|
@ -250,6 +250,12 @@ in rec {
|
||||||
ln -sfn '../${name}' $out/'${name2}.wants'/
|
ln -sfn '../${name}' $out/'${name2}.wants'/
|
||||||
'') (unit.wantedBy or [])) units)}
|
'') (unit.wantedBy or [])) units)}
|
||||||
|
|
||||||
|
${concatStrings (mapAttrsToList (name: unit:
|
||||||
|
concatMapStrings (name2: ''
|
||||||
|
mkdir -p $out/'${name2}.upholds'
|
||||||
|
ln -sfn '../${name}' $out/'${name2}.upholds'/
|
||||||
|
'') (unit.upheldBy or [])) units)}
|
||||||
|
|
||||||
${concatStrings (mapAttrsToList (name: unit:
|
${concatStrings (mapAttrsToList (name: unit:
|
||||||
concatMapStrings (name2: ''
|
concatMapStrings (name2: ''
|
||||||
mkdir -p $out/'${name2}.requires'
|
mkdir -p $out/'${name2}.requires'
|
||||||
|
@ -289,6 +295,8 @@ in rec {
|
||||||
{ Requires = toString config.requires; }
|
{ Requires = toString config.requires; }
|
||||||
// optionalAttrs (config.wants != [])
|
// optionalAttrs (config.wants != [])
|
||||||
{ Wants = toString config.wants; }
|
{ Wants = toString config.wants; }
|
||||||
|
// optionalAttrs (config.upholds != [])
|
||||||
|
{ Upholds = toString config.upholds; }
|
||||||
// optionalAttrs (config.after != [])
|
// optionalAttrs (config.after != [])
|
||||||
{ After = toString config.after; }
|
{ After = toString config.after; }
|
||||||
// optionalAttrs (config.before != [])
|
// optionalAttrs (config.before != [])
|
||||||
|
|
|
@ -74,6 +74,15 @@ in rec {
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
upheldBy = mkOption {
|
||||||
|
default = [];
|
||||||
|
type = types.listOf unitNameType;
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Keep this unit running as long as the listed units are running. This is a continuously
|
||||||
|
enforced version of wantedBy.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
wantedBy = mkOption {
|
wantedBy = mkOption {
|
||||||
default = [];
|
default = [];
|
||||||
type = types.listOf unitNameType;
|
type = types.listOf unitNameType;
|
||||||
|
@ -147,6 +156,20 @@ in rec {
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
upholds = mkOption {
|
||||||
|
default = [];
|
||||||
|
type = types.listOf unitNameType;
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Configures dependencies similar to Wants=, but as long as this unit is up, all units
|
||||||
|
listed in Upholds= are started whenever found to be inactive or failed, and no job is
|
||||||
|
queued for them. While a Wants= dependency on another unit has a one-time effect when
|
||||||
|
this units started, a Upholds= dependency on it has a continuous effect, constantly
|
||||||
|
restarting the unit if necessary. This is an alternative to the Restart= setting of
|
||||||
|
service units, to ensure they are kept running whatever happens. The restart happens
|
||||||
|
without delay, and usual per-unit rate-limit applies.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
after = mkOption {
|
after = mkOption {
|
||||||
default = [];
|
default = [];
|
||||||
type = types.listOf unitNameType;
|
type = types.listOf unitNameType;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user