22 lines
461 B
Nix
22 lines
461 B
Nix
|
{ lib }:
|
||
|
|
||
|
with lib;
|
||
|
let
|
||
|
join-str = concatStringsSep " ";
|
||
|
toEDN = ds:
|
||
|
if isString ds then
|
||
|
''"${ds}"''
|
||
|
else
|
||
|
(if isInt ds then
|
||
|
ds
|
||
|
else
|
||
|
(if isList ds then
|
||
|
"[ ${join-str (map toEDN ds)} ]"
|
||
|
else
|
||
|
(if isAttrs ds then
|
||
|
"{ ${join-str (mapAttrs (k: v: ":${k} ${toEDN v}") ds)} }"
|
||
|
else
|
||
|
throw "unsupported type: ${builtins.typeOf ds}: ${ds}")));
|
||
|
|
||
|
in { ds }: toEDN ds
|