Unverified Commit f7087dd1 authored by Will Fancher's avatar Will Fancher Committed by GitHub
Browse files

Merge pull request #287743 from nagisa/adds-systemd-upholds

systemd: add support for upholds and upheldBy
parents aeea37e7 fd566487
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -286,6 +286,10 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
  [fileSystems.overlay](#opt-fileSystems._name_.overlay.lowerdir). See also the
  [NixOS docs](#sec-overlayfs).

- systemd units can now specify the `Upholds=` and `UpheldBy=` unit dependencies via the aptly
  named `upholds` and `upheldBy` options. These options get systemd to enforce that the
  dependencies remain continuosly running for as long as the dependent unit is in a running state.

- `stdenv`: The `--replace` flag in `substitute`, `substituteInPlace`, `substituteAll`, `substituteAllStream`, and `substituteStream` is now deprecated if favor of the new `--replace-fail`, `--replace-warn` and `--replace-quiet`. The deprecated `--replace` equates to `--replace-warn`.

- A new hardening flag, `zerocallusedregs` was made available, corresponding to the gcc/clang option `-fzero-call-used-regs=used-gpr`.
+9 −1
Original line number Diff line number Diff line
@@ -242,7 +242,7 @@ in rec {
            ln -sfn '${name}' $out/'${name2}'
          '') (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.
      ${concatStrings (mapAttrsToList (name: unit:
          concatMapStrings (name2: ''
@@ -250,6 +250,12 @@ in rec {
            ln -sfn '../${name}' $out/'${name2}.wants'/
          '') (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:
          concatMapStrings (name2: ''
            mkdir -p $out/'${name2}.requires'
@@ -289,6 +295,8 @@ in rec {
          { Requires = toString config.requires; }
        // optionalAttrs (config.wants != [])
          { Wants = toString config.wants; }
        // optionalAttrs (config.upholds != [])
          { Upholds = toString config.upholds; }
        // optionalAttrs (config.after != [])
          { After = toString config.after; }
        // optionalAttrs (config.before != [])
+17 −0
Original line number Diff line number Diff line
@@ -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 {
      default = [];
      type = types.listOf unitNameType;
@@ -147,6 +156,14 @@ in rec {
        '';
      };

      upholds = mkOption {
        default = [];
        type = types.listOf unitNameType;
        description = lib.mdDoc ''
          Keeps the specified running while this unit is running. A continuous version of `wants`.
        '';
      };

      after = mkOption {
        default = [];
        type = types.listOf unitNameType;