mirror of
https://codeberg.org/demostf/parser.git
synced 2026-06-03 18:24:05 +02:00
99 lines
3.2 KiB
Nix
99 lines
3.2 KiB
Nix
{
|
|
inputs = {
|
|
nixpkgs.url = "nixpkgs/release-23.05";
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
naersk.url = "github:icewind1991/naersk?rev=6d245a3bbb2ee31ec726bb57b9a8b206302e7110";
|
|
rust-overlay.url = "github:oxalica/rust-overlay";
|
|
rust-overlay.inputs.nixpkgs.follows = "nixpkgs";
|
|
rust-overlay.inputs.flake-utils.follows = "flake-utils";
|
|
cross-naersk.url = "github:icewind1991/cross-naersk";
|
|
cross-naersk.inputs.nixpkgs.follows = "nixpkgs";
|
|
cross-naersk.inputs.naersk.follows = "naersk";
|
|
};
|
|
|
|
outputs = {
|
|
self,
|
|
flake-utils,
|
|
cross-naersk,
|
|
naersk,
|
|
nixpkgs,
|
|
rust-overlay,
|
|
...
|
|
}:
|
|
flake-utils.lib.eachDefaultSystem (system: let
|
|
overlays = [ (import rust-overlay) ];
|
|
pkgs = (import nixpkgs) {
|
|
inherit system overlays;
|
|
};
|
|
lib = pkgs.lib;
|
|
|
|
hostTarget = pkgs.hostPlatform.config;
|
|
targets = [
|
|
"x86_64-unknown-linux-musl"
|
|
"i686-unknown-linux-musl"
|
|
"armv7-unknown-linux-musleabihf"
|
|
"aarch64-unknown-linux-musl"
|
|
"x86_64-pc-windows-gnu"
|
|
hostTarget
|
|
];
|
|
|
|
releaseTargets = lib.lists.remove hostTarget targets;
|
|
|
|
artifactForTarget = target: "parse_demo${cross-naersk'.execSufficForTarget target}";
|
|
assetNameForTarget = target: "parser-${builtins.replaceStrings ["-unknown" "-gnu" "-musl" "eabihf" "-pc"] ["" "" "" "" ""] target}${cross-naersk'.execSufficForTarget target}";
|
|
|
|
cross-naersk' = pkgs.callPackage cross-naersk {inherit naersk;};
|
|
src = lib.sources.sourceByRegex (lib.cleanSource ./.) ["Cargo.*" "(src|benches|tests|test_data)(/.*)?"];
|
|
nearskOpt = {
|
|
pname = "dispenser";
|
|
root = src;
|
|
};
|
|
|
|
buildMatrix = targets: {
|
|
include = builtins.map (target: {
|
|
inherit target;
|
|
artifact_name = artifactForTarget target;
|
|
asset_name = assetNameForTarget target;
|
|
}) targets;
|
|
};
|
|
hostNaersk = cross-naersk'.hostNaersk;
|
|
in rec {
|
|
packages = lib.attrsets.genAttrs targets (target: (cross-naersk'.buildPackage target) (nearskOpt // {
|
|
overrideMain = args: args // {
|
|
preConfigure = ''
|
|
cargo_build_options="$cargo_build_options --bin parse_demo"
|
|
'';
|
|
};
|
|
})) // rec {
|
|
tf-demo-parser = packages.${hostTarget};
|
|
check = hostNaersk.buildPackage (nearskOpt // {
|
|
mode = "check";
|
|
});
|
|
clippy = hostNaersk.buildPackage (nearskOpt // {
|
|
mode = "clippy";
|
|
});
|
|
test = hostNaersk.buildPackage (nearskOpt // {
|
|
release = false;
|
|
mode = "test";
|
|
});
|
|
default = tf-demo-parser;
|
|
};
|
|
|
|
inherit targets;
|
|
inherit releaseTargets;
|
|
matrix = buildMatrix targets;
|
|
releaseMatrix = buildMatrix releaseTargets;
|
|
|
|
apps = rec {
|
|
tf-demo-parser = flake-utils.lib.mkApp {
|
|
drv = packages.tf-demo-parser;
|
|
exePath = "/bin/parse_demo";
|
|
};
|
|
default = tf-demo-parser;
|
|
};
|
|
|
|
devShells.default = pkgs.mkShell {
|
|
nativeBuildInputs = with pkgs; [rust-bin.stable.latest.default bacon cargo-edit cargo-outdated rustfmt clippy cargo-audit hyperfine valgrind cargo-insta cargo-semver-checks];
|
|
};
|
|
});
|
|
}
|