74 lines
1.8 KiB
Nix
Raw Permalink Normal View History

2026-05-04 11:29:17 +02:00
{
# 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"
'';
};
}