kubenix/lib/upstreamables.nix

42 lines
1.1 KiB
Nix
Raw Normal View History

2023-07-07 22:01:34 -04:00
{ lib, pkgs }:
2022-04-02 12:40:35 -07:00
with lib; let
self = {
importYAML = path:
2023-07-07 22:01:34 -04:00
importJSON (pkgs.runCommand "yaml-to-json" { } ''
${pkgs.yq}/bin/yq -c . ${path} > $out
2022-04-02 12:40:35 -07:00
'');
toYAML = config:
2023-07-07 22:01:34 -04:00
builtins.readFile (pkgs.runCommand "to-yaml" { } ''
${pkgs.yq}/bin/yq -y . ${pkgs.writeText "to-json" (builtins.toJSON config)} > $out
2022-04-02 12:40:35 -07:00
'');
toMultiDocumentYaml = name: documents:
2023-07-07 22:01:34 -04:00
pkgs.runCommand name { }
(concatMapStringsSep "\necho --- >> $out\n"
(
d: "${pkgs.yq}/bin/yq -y . ${pkgs.writeText "to-json" (builtins.toJSON d)} >> $out"
2023-07-07 22:01:34 -04:00
)
documents);
2022-04-02 12:40:35 -07:00
toBase64 = value:
builtins.readFile
2023-07-07 22:01:34 -04:00
(pkgs.runCommand "value-to-b64" { } "echo -n '${value}' | ${pkgs.coreutils}/bin/base64 -w0 > $out");
2022-04-02 12:40:35 -07:00
2022-04-02 13:41:07 -07:00
exp = base: exp: foldr (_value: acc: acc * base) 1 (range 1 exp);
2022-04-02 12:40:35 -07:00
octalToDecimal = value:
(foldr
(char: acc: {
i = acc.i + 1;
value = acc.value + (toInt char) * (self.exp 8 acc.i);
})
{
i = 0;
value = 0;
}
2023-07-07 22:01:34 -04:00
(stringToCharacters value)).value;
2022-04-02 12:40:35 -07:00
};
in
2023-07-07 22:01:34 -04:00
self