diff --git a/lib/default.nix b/lib/default.nix index 3fda156b75a99..763ddad22eeee 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -71,7 +71,7 @@ let # these are the only ones that are currently not inherit (builtins) addErrorContext isPath trace typeOf unsafeGetAttrPos; inherit (self.trivial) id const pipe concat or and xor bitAnd bitOr bitXor - bitNot boolToString mergeAttrs flip mapNullable inNixShell isFloat min max + bitNot boolToString mergeAttrs flip defaultTo mapNullable inNixShell isFloat min max importJSON importTOML warn warnIf warnIfNot throwIf throwIfNot checkListOfEnum info showWarnings nixpkgsVersion version isInOldestRelease oldestSupportedReleaseIsAtLeast mod compare splitByAndCompare seq deepSeq lessThan add sub diff --git a/lib/trivial.nix b/lib/trivial.nix index 205224126094e..d6cb7e7d7fd98 100644 --- a/lib/trivial.nix +++ b/lib/trivial.nix @@ -316,6 +316,40 @@ in { */ flip = f: a: b: f b a; + /** + Return `maybeValue` if not null, otherwise return `default`. + + + # Inputs + + `default` + + : 1\. Function argument + + `maybeValue` + + : 2\. Function argument + + + # Examples + :::{.example} + ## `lib.trivial.defaultTo` usage example + + ```nix + defaultTo "default" null + => "default" + defaultTo "default" "foo" + => "foo" + defaultTo "default" false + => false + ``` + + ::: + */ + defaultTo = default: maybeValue: + if maybeValue != null then maybeValue + else default; + /** Apply function if the supplied argument is non-null.