tricot/flake.nix
Armaël Guéneau 888f499b97
All checks were successful
ci/woodpecker/manual/woodpecker Pipeline was successful
flake.nix: switch to crane
2025-02-20 13:34:06 +01:00

78 lines
2.4 KiB
Nix

{
description = "Tricot, a reverse proxy with consul integration";
# Nixpkgs 24.11 as of 2025-01-12
inputs.nixpkgs.url =
"github:NixOS/nixpkgs/7c4869c47090dd7f9f1bdfb49a22aea026996815";
# Rust overlay as of 2025-02-03
inputs.rust-overlay.url =
"github:oxalica/rust-overlay/35c6f8c4352f995ecd53896200769f80a3e8f22d";
inputs.rust-overlay.inputs.nixpkgs.follows = "nixpkgs";
inputs.crane.url = "github:ipetkov/crane";
inputs.flake-utils.url = "github:numtide/flake-utils";
outputs = { self, nixpkgs, crane, flake-utils, rust-overlay, ... }:
flake-utils.lib.eachSystem [ "x86_64-linux" ] (localSystem:
let
crossSystem = "x86_64-unknown-linux-musl";
rustVersion = "1.84.0";
pkgs = import nixpkgs {
# we need a full musl toolchain because we're depending on openssl (a
# C library), which we thus need to compile for musl
inherit localSystem;
crossSystem = { config = crossSystem; };
overlays = [ (import rust-overlay) ];
};
craneLib = (crane.mkLib pkgs).overrideToolchain
(p: p.rust-bin.stable.${rustVersion}.default);
commonArgs = {
src = craneLib.cleanCargoSource ./.;
strictDeps = true;
# required for building openssl
nativeBuildInputs = [
pkgs.perl
];
OPENSSL_STATIC = "yes";
CARGO_BUILD_TARGET = crossSystem;
CARGO_BUILD_RUSTFLAGS = "-C target-feature=+crt-static";
doCheck = false;
};
devArgs = (commonArgs // { CARGO_PROFILE = "dev"; });
releaseArgs = (commonArgs // { CARGO_PROFILE = "release"; });
tricot-deps-dev = craneLib.buildDepsOnly devArgs;
in
{
packages = rec {
default = craneLib.buildPackage releaseArgs;
debug = craneLib.buildPackage (devArgs // {
cargoArtifacts = tricot-deps-dev;
});
test = craneLib.cargoTest (devArgs // {
cargoArtifacts = tricot-deps-dev;
doCheck = true;
});
docker = pkgs.dockerTools.buildImage {
name = "tricot";
config = {
contents = [ pkgs.cacert ];
Cmd = [ "${self.packages.x86_64-linux.default}/bin/tricot" ];
};
};
};
}
);
}