nix: switch to crane for incramental builds

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ia5ab2f512ffac20722966b605d7eaf156a6a6964
This commit is contained in:
raf 2025-10-31 22:55:30 +03:00
commit 57b739ddbe
Signed by: NotAShelf
GPG key ID: 29D95B64378DB4BF
3 changed files with 50 additions and 24 deletions

View file

@ -1,28 +1,32 @@
{
lib,
rustPlatform,
craneLib,
}: let
fs = lib.fileset;
pname = "eris";
inherit ((lib.importTOML ../Cargo.toml).package) version;
src = let
fs = lib.fileset;
s = ../.;
in
fs.toSource {
root = s;
fileset = fs.unions [
(fs.fileFilter (file: builtins.any file.hasExt ["rs"]) (s + /src))
(s + /Cargo.lock)
(s + /Cargo.toml)
];
};
lockfile = ../Cargo.lock;
cargoToml = ../Cargo.toml;
cargoArtifacts = craneLib.buildDepsOnly {
name = "${pname}-deps";
strictDeps = true;
inherit src;
};
in
rustPlatform.buildRustPackage {
pname = "eris";
version = "0.0.1";
craneLib.buildPackage {
inherit pname src version cargoArtifacts;
src = let
s = ../.;
in
fs.toSource {
root = s;
fileset = fs.unions [
(fs.fileFilter (file: builtins.any file.hasExt ["rs"]) (s + /src))
(s + /contrib)
lockfile
cargoToml
];
};
strictDeps = true;
postInstall = ''
mkdir -p $out/share/contrib
@ -30,10 +34,10 @@ in
cp -rv $src/contrib/lua $out/share/contrib
'';
cargoLock.lockFile = lockfile;
meta = {
description = "Sophisticated HTTP tarpit and honeypot stream";
homepage = "https://git.frzn.dev/NotAShelf/eris";
maintainers = [lib.maintainers.NotAShelf];
mainProgram = "eris";
};
}