74 lines
1.8 KiB
Nix
74 lines
1.8 KiB
Nix
{
|
|
# Exposes a `lib` attrset for pure helper values that other outputs can reuse.
|
|
description = "Expose reusable helpers through lib";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
};
|
|
|
|
outputs =
|
|
{ self, nixpkgs, ... }:
|
|
let
|
|
system = "x86_64-linux";
|
|
pkgs = import nixpkgs { inherit system; };
|
|
|
|
playgroundLib = rec {
|
|
rolloutPlan = [
|
|
{
|
|
service = "api";
|
|
wave = 1;
|
|
owner = "team-edge";
|
|
}
|
|
{
|
|
service = "worker";
|
|
wave = 2;
|
|
owner = "team-batch";
|
|
}
|
|
];
|
|
|
|
ownerByService = builtins.listToAttrs (
|
|
map (step: {
|
|
name = step.service;
|
|
value = step.owner;
|
|
}) rolloutPlan
|
|
);
|
|
|
|
renderStep = step: "wave ${toString step.wave}: ${step.service} owned by ${step.owner}";
|
|
|
|
renderPlan = builtins.concatStringsSep "\n" (map renderStep rolloutPlan);
|
|
};
|
|
in
|
|
{
|
|
lib = playgroundLib;
|
|
|
|
packages.${system}.default = pkgs.writeShellApplication {
|
|
name = "show-lib-plan";
|
|
text = ''
|
|
cat <<'EOF'
|
|
${self.lib.renderPlan}
|
|
EOF
|
|
'';
|
|
};
|
|
|
|
checks.${system}.lib-output =
|
|
pkgs.runCommand "lib-output-check"
|
|
{
|
|
apiOwner = self.lib.ownerByService.api;
|
|
workerLine = self.lib.renderStep (builtins.elemAt self.lib.rolloutPlan 1);
|
|
}
|
|
''
|
|
if [ "$apiOwner" != "team-edge" ]; then
|
|
echo "unexpected api owner: $apiOwner" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ "$workerLine" != "wave 2: worker owned by team-batch" ]; then
|
|
echo "unexpected worker line: $workerLine" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo ok > "$out"
|
|
'';
|
|
};
|
|
}
|