Another workaround could be creating a second set just to pass into the function:
nix-repl> let
s = {
a = ["a" "b" "c" ];
b = ["d" "e" "f"];
};
in
lib.mapCartesianProduct ({x, y}: "${x}-${y}") { x = s.b; y = s.a; }
[
"d-a"
"d-b"
"d-c"
"e-a"
"e-b"
"e-c"
"f-a"
"f-b"
"f-c"
]
I don’t have a strong opinion on deprecation, probably because I don’t have a strong need for the function; I’ll leave that to others.