nix-ci/flake.nix
⛧-440729 [sophie] 8e1813ca0d
initial commit
2025-05-06 01:11:31 +02:00

65 lines
1.8 KiB
Nix

{
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};
});
}