diff options
Diffstat (limited to 'nixpkgs/nixos/lib/systemd-lib.nix')
-rw-r--r-- | nixpkgs/nixos/lib/systemd-lib.nix | 68 |
1 files changed, 33 insertions, 35 deletions
diff --git a/nixpkgs/nixos/lib/systemd-lib.nix b/nixpkgs/nixos/lib/systemd-lib.nix index 820ccbcbf72a..347ee7303936 100644 --- a/nixpkgs/nixos/lib/systemd-lib.nix +++ b/nixpkgs/nixos/lib/systemd-lib.nix @@ -360,9 +360,13 @@ in rec { }; }; - commonUnitText = def: '' + commonUnitText = def: lines: '' [Unit] ${attrsToSection def.unitConfig} + '' + lines + lib.optionalString (def.wantedBy != [ ]) '' + + [Install] + WantedBy=${concatStringsSep " " def.wantedBy} ''; targetToUnit = name: def: @@ -376,7 +380,7 @@ in rec { serviceToUnit = name: def: { inherit (def) aliases wantedBy requiredBy enable overrideStrategy; - text = commonUnitText def + '' + text = commonUnitText def ('' [Service] '' + (let env = cfg.globalEnvironment // def.environment; in concatMapStrings (n: @@ -392,63 +396,57 @@ in rec { '' else "") + optionalString (def ? stopIfChanged && !def.stopIfChanged) '' X-StopIfChanged=false - '' + attrsToSection def.serviceConfig; + '' + attrsToSection def.serviceConfig); }; socketToUnit = name: def: { inherit (def) aliases wantedBy requiredBy enable overrideStrategy; - text = commonUnitText def + - '' - [Socket] - ${attrsToSection def.socketConfig} - ${concatStringsSep "\n" (map (s: "ListenStream=${s}") def.listenStreams)} - ${concatStringsSep "\n" (map (s: "ListenDatagram=${s}") def.listenDatagrams)} - ''; + text = commonUnitText def '' + [Socket] + ${attrsToSection def.socketConfig} + ${concatStringsSep "\n" (map (s: "ListenStream=${s}") def.listenStreams)} + ${concatStringsSep "\n" (map (s: "ListenDatagram=${s}") def.listenDatagrams)} + ''; }; timerToUnit = name: def: { inherit (def) aliases wantedBy requiredBy enable overrideStrategy; - text = commonUnitText def + - '' - [Timer] - ${attrsToSection def.timerConfig} - ''; + text = commonUnitText def '' + [Timer] + ${attrsToSection def.timerConfig} + ''; }; pathToUnit = name: def: { inherit (def) aliases wantedBy requiredBy enable overrideStrategy; - text = commonUnitText def + - '' - [Path] - ${attrsToSection def.pathConfig} - ''; + text = commonUnitText def '' + [Path] + ${attrsToSection def.pathConfig} + ''; }; mountToUnit = name: def: { inherit (def) aliases wantedBy requiredBy enable overrideStrategy; - text = commonUnitText def + - '' - [Mount] - ${attrsToSection def.mountConfig} - ''; + text = commonUnitText def '' + [Mount] + ${attrsToSection def.mountConfig} + ''; }; automountToUnit = name: def: { inherit (def) aliases wantedBy requiredBy enable overrideStrategy; - text = commonUnitText def + - '' - [Automount] - ${attrsToSection def.automountConfig} - ''; + text = commonUnitText def '' + [Automount] + ${attrsToSection def.automountConfig} + ''; }; sliceToUnit = name: def: { inherit (def) aliases wantedBy requiredBy enable overrideStrategy; - text = commonUnitText def + - '' - [Slice] - ${attrsToSection def.sliceConfig} - ''; + text = commonUnitText def '' + [Slice] + ${attrsToSection def.sliceConfig} + ''; }; # Create a directory that contains systemd definition files from an attrset |