{ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; }; outputs = { nixpkgs, self, }: let forAllSystems = fn: builtins.foldl' (attrs: system: let outputs = fn system; outputNames = builtins.attrNames outputs; in builtins.foldl' (attrs: outName: let existing = attrs.${outName} or {}; new = existing // {${system} = outputs.${outName};}; in attrs // {${outName} = new;}) attrs outputNames) {} ["x86_64-linux" "aarch64-linux"]; in { overlays.default = final: prev: { nix-ci = final.lib.flip final.callPackage {} ({ rustPlatform, lib, makeWrapper, nix-eval-jobs, }: let cargoToml = builtins.fromTOML (builtins.readFile ./Cargo.toml); in rustPlatform.buildRustPackage { pname = cargoToml.package.name; version = cargoToml.package.version; src = lib.fileset.toSource { root = ./.; fileset = lib.fileset.unions [ ./src ./Cargo.toml ./Cargo.lock ]; }; nativeBuildInputs = [makeWrapper]; cargoLock.lockFile = ./Cargo.lock; preFixup = '' wrapProgram "$out/bin/nix-ci" \ --prefix PATH : ${lib.makeBinPath [nix-eval-jobs]} ''; }); }; } // forAllSystems (system: let pkgs = import nixpkgs { inherit system; overlays = [self.overlays.default]; }; in { devShells.default = import ./shell.nix {inherit pkgs;}; packages = { default = pkgs.nix-ci; nix-ci = pkgs.nix-ci; }; checks = self.packages.${system}; }); }