diff --git a/lib/trivial.nix b/lib/trivial.nix index 62906339e60..735aa55e0dc 100644 --- a/lib/trivial.nix +++ b/lib/trivial.nix @@ -122,6 +122,9 @@ rec { # Flip the order of the arguments of a binary function. flip = f: a: b: f b a; + # Apply function if argument is non-null + mapNullable = f: a: if isNull a then a else f a; + # Pull in some builtins not included elsewhere. inherit (builtins) pathExists readFile isBool isFunction diff --git a/nixos/modules/services/monitoring/graphite.nix b/nixos/modules/services/monitoring/graphite.nix index c5352e5887d..98931e65bb5 100644 --- a/nixos/modules/services/monitoring/graphite.nix +++ b/nixos/modules/services/monitoring/graphite.nix @@ -4,7 +4,7 @@ with lib; let cfg = config.services.graphite; - writeTextOrNull = f: t: if t == null then null else pkgs.writeTextDir f t; + writeTextOrNull = f: t: mapNullable (pkgs.writeTextDir f) t; dataDir = cfg.dataDir; diff --git a/nixos/modules/services/monitoring/prometheus/default.nix b/nixos/modules/services/monitoring/prometheus/default.nix index 32af41cc62f..b9435c02b1d 100644 --- a/nixos/modules/services/monitoring/prometheus/default.nix +++ b/nixos/modules/services/monitoring/prometheus/default.nix @@ -141,7 +141,7 @@ let }; }); default = null; - apply = x: if x == null then null else _filter x; + apply = x: mapNullable _filter x; description = '' Optional http login credentials for metrics scraping. ''; diff --git a/pkgs/development/libraries/wiredtiger/default.nix b/pkgs/development/libraries/wiredtiger/default.nix index 347686014d1..e4b95fc1cb9 100644 --- a/pkgs/development/libraries/wiredtiger/default.nix +++ b/pkgs/development/libraries/wiredtiger/default.nix @@ -7,9 +7,10 @@ with stdenv.lib; let - mkFlag = trueStr: falseStr: cond: name: val: - if cond == null then null else - "--${if cond != false then trueStr else falseStr}${name}${if val != null && cond != false then "=${val}" else ""}"; + mkFlag = trueStr: falseStr: cond: name: val: "--" + + (if cond then trueStr else falseStr) + + name + + optionalString (val != null && cond != false) "=${val}"; mkEnable = mkFlag "enable-" "disable-"; mkWith = mkFlag "with-" "without-"; mkOther = mkFlag "" "" true; diff --git a/pkgs/os-specific/linux/nvidia-x11/generic.nix b/pkgs/os-specific/linux/nvidia-x11/generic.nix index 44a96f9bc0d..9441ce772c8 100644 --- a/pkgs/os-specific/linux/nvidia-x11/generic.nix +++ b/pkgs/os-specific/linux/nvidia-x11/generic.nix @@ -85,7 +85,7 @@ let withGtk2 = preferGtk2; withGtk3 = !preferGtk2; }; - persistenced = if persistencedSha256 == null then null else callPackage (import ./persistenced.nix self persistencedSha256) { }; + persistenced = mapNullable (hash: callPackage (import ./persistenced.nix self hash) { }) persistencedSha256; }; meta = with stdenv.lib; { diff --git a/pkgs/servers/shishi/default.nix b/pkgs/servers/shishi/default.nix index 3e340ba7df4..535571f46e2 100644 --- a/pkgs/servers/shishi/default.nix +++ b/pkgs/servers/shishi/default.nix @@ -6,9 +6,10 @@ }: let - mkFlag = trueStr: falseStr: cond: name: val: - if cond == null then null else - "--${if cond != false then trueStr else falseStr}${name}${if val != null && cond != false then "=${val}" else ""}"; + mkFlag = trueStr: falseStr: cond: name: val: "--" + + (if cond then trueStr else falseStr) + + name + + stdenv.lib.optionalString (val != null && cond != false) "=${val}"; mkEnable = mkFlag "enable-" "disable-"; mkWith = mkFlag "with-" "without-"; mkOther = mkFlag "" "" true; diff --git a/pkgs/tools/filesystems/ceph/generic.nix b/pkgs/tools/filesystems/ceph/generic.nix index d21d790dac8..e4c8b0f33bc 100644 --- a/pkgs/tools/filesystems/ceph/generic.nix +++ b/pkgs/tools/filesystems/ceph/generic.nix @@ -31,11 +31,10 @@ with stdenv; with stdenv.lib; let inherit (python2Packages) python; - mkFlag = trueStr: falseStr: cond: name: val: - if cond == null then null else - "--${if cond != false then trueStr else falseStr}${name}" - + "${if val != null && cond != false then "=${val}" else ""}"; - + mkFlag = trueStr: falseStr: cond: name: val: "--" + + (if cond then trueStr else falseStr) + + name + + optionalString (val != null && cond != false) "=${val}"; mkEnable = mkFlag "enable-" "disable-"; mkWith = mkFlag "with-" "without-"; mkOther = mkFlag "" "" true;