nix: initial tooling setup

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ib47aeafee9474f491cfebddd3fa935826a6a6964
This commit is contained in:
raf 2025-11-02 19:53:22 +03:00
commit 2c4cf83f47
Signed by: NotAShelf
GPG key ID: 29D95B64378DB4BF
3 changed files with 114 additions and 0 deletions

70
flake.nix Normal file
View file

@ -0,0 +1,70 @@
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
crane.url = "github:ipetkov/crane";
};
outputs = {
nixpkgs,
crane,
...
}: let
# FIXME: allow multi-system when I can be arsed to write the abstractions
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
craneLib = crane.mkLib pkgs;
src = craneLib.cleanCargoSource ./.;
commonArgs = {
pname = "feel-ci";
inherit src;
strictDeps = true;
};
cargoArtifacts = craneLib.buildDepsOnly commonArgs;
# Build individual workspace members
server = craneLib.buildPackage (commonArgs
// {
inherit cargoArtifacts;
pname = "server";
cargoExtraArgs = "--package server";
});
evaluator = craneLib.buildPackage (commonArgs
// {
inherit cargoArtifacts;
pname = "evaluator";
cargoExtraArgs = "--package evaluator";
});
queue-runner = craneLib.buildPackage (commonArgs
// {
inherit cargoArtifacts;
pname = "queue-runner";
cargoExtraArgs = "--package queue-runner";
});
common = craneLib.buildPackage (commonArgs
// {
inherit cargoArtifacts;
pname = "common";
cargoExtraArgs = "--package common";
});
in {
packages.${system} = {
inherit server evaluator queue-runner common;
};
devShells.${system}.default = craneLib.devShell {
name = "fc";
inputsFrom = [server];
packages = with pkgs; [
rust-analyzer
postgresql
pkg-config
openssl
];
};
};
}