about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--default.nix6
1 files changed, 4 insertions, 2 deletions
diff --git a/default.nix b/default.nix
index 9cd09e644028..2167b6e8b71f 100644
--- a/default.nix
+++ b/default.nix
@@ -123,8 +123,10 @@ in lib.fix (self: {
       };
   };
 
-  either = t1: t2: typedef "either<${t1.name},${t2.name}>"
-    (x: (self.type t1).check x || (self.type t2).check x);
+  eitherN = tn: typedef "either<${concatStringsSep ", " (map (x: x.name) tn)}>"
+    (x: any (t: (self.type t).check x) tn);
+
+  either = t1: t2: self.eitherN [ t1 t2 ];
 
   list = t: typedef' rec {
     name = "list<${t.name}>";