From 57b739ddbe5309d19cda68fd473fc4693b33ccc4 Mon Sep 17 00:00:00 2001 From: NotAShelf Date: Fri, 31 Oct 2025 22:55:30 +0300 Subject: [PATCH] nix: switch to crane for incramental builds Signed-off-by: NotAShelf Change-Id: Ia5ab2f512ffac20722966b605d7eaf156a6a6964 --- flake.lock | 16 ++++++++++++++++ flake.nix | 12 +++++++++--- nix/package.nix | 46 +++++++++++++++++++++++++--------------------- 3 files changed, 50 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index 4ab3227..d1245af 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,20 @@ { "nodes": { + "crane": { + "locked": { + "lastModified": 1760924934, + "narHash": "sha256-tuuqY5aU7cUkR71sO2TraVKK2boYrdW3gCSXUkF4i44=", + "owner": "ipetkov", + "repo": "crane", + "rev": "c6b4d5308293d0d04fcfeee92705017537cad02f", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1761672384, @@ -18,6 +33,7 @@ }, "root": { "inputs": { + "crane": "crane", "nixpkgs": "nixpkgs" } } diff --git a/flake.nix b/flake.nix index 471149d..b5b8db7 100644 --- a/flake.nix +++ b/flake.nix @@ -1,9 +1,13 @@ { - inputs.nixpkgs.url = "github:NixOS/nixpkgs?ref=nixos-unstable"; + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs?ref=nixos-unstable"; + crane.url = "github:ipetkov/crane"; + }; outputs = { self, nixpkgs, + crane, }: let systems = ["x86_64-linux" "aarch64-linux"]; forEachSystem = nixpkgs.lib.genAttrs systems; @@ -14,8 +18,10 @@ default = self.nixosModules.eris; }; - packages = forEachSystem (system: { - eris = pkgsForEach.${system}.callPackage ./nix/package.nix {}; + packages = forEachSystem (system: let + craneLib = crane.mkLib pkgsForEach.${system}; + in { + eris = pkgsForEach.${system}.callPackage ./nix/package.nix {inherit craneLib;}; default = self.packages.${system}.eris; }); diff --git a/nix/package.nix b/nix/package.nix index b227e1a..7e790fa 100644 --- a/nix/package.nix +++ b/nix/package.nix @@ -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"; }; }