100 lines
2.8 KiB
Nix
100 lines
2.8 KiB
Nix
{
|
|
inputs = {
|
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
|
rust-overlay = {
|
|
url = "github:oxalica/rust-overlay";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
};
|
|
outputs =
|
|
{ nixpkgs
|
|
, rust-overlay
|
|
, 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
|
|
rust-overlay.overlays.default
|
|
|
|
|
|
(final: prev: {
|
|
inherit (prev.lixPackageSets.stable)
|
|
nixpkgs-review
|
|
nix-eval-jobs
|
|
nix-fast-build
|
|
colmena;
|
|
})
|
|
];
|
|
};
|
|
rust = pkgs.rust-bin.stable.latest.default.override {
|
|
extensions = [
|
|
"rust-src" # for rust-analyzer
|
|
"rust-analyzer"
|
|
];
|
|
};
|
|
in
|
|
{
|
|
devShells.default = pkgs.mkShell {
|
|
nativeBuildInputs = [ pkgs.nix-eval-jobs rust pkgs.attic-client ];
|
|
};
|
|
packages = {
|
|
default = pkgs.nix-ci;
|
|
nix-ci = pkgs.nix-ci;
|
|
};
|
|
checks = self.packages.${system};
|
|
});
|
|
}
|