1{ lib }:
2with lib;
3{
4 mkIfElse =
5 cond: a: b:
6 lib.mkMerge [
7 (lib.mkIf cond a)
8 (lib.mkIf (!cond) b)
9 ];
10 optionalName = condition: name: if condition then name else null;
11 mif = {
12 list = optionals;
13 list' = optional;
14 attrs = optionalAttrs;
15 num = condition: value: if condition then value else 0;
16 null = syvl.optionalName;
17 str = optionalString;
18 True = condition: value: if condition then value else true;
19 False = condition: value: if condition then value else false;
20 fn =
21 condition: fn: value:
22 if condition then (fn value) else value;
23 };
24 mifNotNull = {
25 __functor =
26 self: a: b:
27 if (a != null) then a else b;
28 list = a: optionals (a != null);
29 list' = a: optional (a != null);
30 attrs = a: optionalAttrs (a != null);
31 num = a: b: if (a != null) then b else 0;
32 null = a: b: if (a != null) then b else null;
33 nullb =
34 a: b: c:
35 if (a != null) then b else c;
36 str = a: optionalString (a != null);
37 True = a: b: if (a != null) then b else true;
38 False = a: b: if (a != null) then b else false;
39 };
40}