Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I253fbcf0e2f13e92ac9983256f1d57fa6a6a6964
120 lines
3.4 KiB
Nix
120 lines
3.4 KiB
Nix
{
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs?ref=nixpkgs-unstable";
|
|
crane.url = "github:ipetkov/crane";
|
|
};
|
|
|
|
outputs = {
|
|
nixpkgs,
|
|
crane,
|
|
self,
|
|
...
|
|
}: let
|
|
inherit (nixpkgs) lib;
|
|
forAllSystems = lib.genAttrs ["x86_64-linux" "aarch64-linux"];
|
|
in {
|
|
# NixOS module for feel-ci
|
|
nixosModules = {
|
|
fc-ci = ./nix/modules/nixos.nix;
|
|
default = self.nixosModules.fc-ci;
|
|
};
|
|
|
|
packages = forAllSystems (system: let
|
|
pkgs = nixpkgs.legacyPackages.${system};
|
|
craneLib = crane.mkLib pkgs;
|
|
|
|
src = let
|
|
fs = lib.fileset;
|
|
s = ./.;
|
|
in
|
|
fs.toSource {
|
|
root = s;
|
|
fileset = fs.unions [
|
|
(s + /crates)
|
|
(s + /Cargo.lock)
|
|
(s + /Cargo.toml)
|
|
];
|
|
};
|
|
|
|
commonArgs = {
|
|
pname = "feel-ci";
|
|
inherit src;
|
|
strictDeps = true;
|
|
nativeBuildInputs = with pkgs; [pkg-config];
|
|
buildInputs = with pkgs; [openssl];
|
|
};
|
|
|
|
cargoArtifacts = craneLib.buildDepsOnly commonArgs;
|
|
in {
|
|
demo-vm = pkgs.callPackage ./nix/demo-vm.nix {
|
|
nixosModule = self.nixosModules.default;
|
|
fc-packages = {
|
|
inherit (self.packages.${system}) fc-common fc-evaluator fc-migrate-cli fc-queue-runner fc-server;
|
|
};
|
|
};
|
|
|
|
# FC Packages
|
|
fc-common = pkgs.callPackage ./nix/packages/fc-common.nix {
|
|
inherit craneLib commonArgs cargoArtifacts;
|
|
};
|
|
|
|
fc-evaluator = pkgs.callPackage ./nix/packages/fc-evaluator.nix {
|
|
inherit craneLib commonArgs cargoArtifacts;
|
|
};
|
|
|
|
fc-migrate-cli = pkgs.callPackage ./nix/packages/fc-migrate-cli.nix {
|
|
inherit craneLib commonArgs cargoArtifacts;
|
|
};
|
|
|
|
fc-queue-runner = pkgs.callPackage ./nix/packages/fc-queue-runner.nix {
|
|
inherit craneLib commonArgs cargoArtifacts;
|
|
};
|
|
|
|
fc-server = pkgs.callPackage ./nix/packages/fc-server.nix {
|
|
inherit craneLib commonArgs cargoArtifacts;
|
|
};
|
|
});
|
|
|
|
checks = forAllSystems (system: let
|
|
pkgs = nixpkgs.legacyPackages.${system};
|
|
testArgs = {
|
|
nixosModule = self.nixosModules.default;
|
|
fc-packages = {
|
|
inherit (self.packages.${system}) fc-common fc-evaluator fc-migrate-cli fc-queue-runner fc-server;
|
|
};
|
|
};
|
|
in {
|
|
# Split VM integration tests
|
|
service-startup = pkgs.callPackage ./nix/tests/service-startup.nix testArgs;
|
|
basic-api = pkgs.callPackage ./nix/tests/basic-api.nix testArgs;
|
|
auth-rbac = pkgs.callPackage ./nix/tests/auth-rbac.nix testArgs;
|
|
api-crud = pkgs.callPackage ./nix/tests/api-crud.nix testArgs;
|
|
features = pkgs.callPackage ./nix/tests/features.nix testArgs;
|
|
e2e = pkgs.callPackage ./nix/tests/e2e.nix testArgs;
|
|
|
|
# Legacy monolithic test (for reference, can be removed after split tests pass)
|
|
vm-test = pkgs.callPackage ./nix/vm-test.nix testArgs;
|
|
});
|
|
|
|
devShells = forAllSystems (system: let
|
|
pkgs = nixpkgs.legacyPackages.${system};
|
|
in {
|
|
default = pkgs.mkShell {
|
|
name = "fc";
|
|
inputsFrom = [self.packages.${system}.fc-server];
|
|
|
|
strictDeps = true;
|
|
packages = with pkgs; [
|
|
postgresql
|
|
pkg-config
|
|
openssl
|
|
|
|
taplo
|
|
(rustfmt.override {asNightly = true;})
|
|
clippy
|
|
cargo-nextest
|
|
];
|
|
};
|
|
});
|
|
};
|
|
}
|