{ # 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" ''; }; }