Skip to content

Commit

Permalink
build: rely on flake-utils.lib.system constants
Browse files Browse the repository at this point in the history
Signed-off-by: Roman Volosatovs <[email protected]>
  • Loading branch information
rvolosatovs committed Oct 6, 2022
1 parent 6b842f1 commit 97f363d
Showing 1 changed file with 101 additions and 100 deletions.
201 changes: 101 additions & 100 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -23,106 +23,107 @@
rust-overlay,
...
}:
flake-utils.lib.eachSystem [
"aarch64-darwin"
"aarch64-linux"
"powerpc64le-linux"
"x86_64-darwin"
"x86_64-linux"
] (
system: let
pkgs = import nixpkgs {
inherit system;
overlays = [(import rust-overlay)];
};

# TODO: Add and use an overlay
enarxBin = enarx.packages.${system}.default;

rust = pkgs.rust-bin.fromRustupToolchainFile "${self}/rust-toolchain.toml";

cargo.toml = builtins.fromTOML (builtins.readFile "${self}/Cargo.toml");
src =
pkgs.nix-gitignore.gitignoreRecursiveSource [
"*.nix"
"*.yml"
"/.github"
"flake.lock"
"LICENSE"
"rust-toolchain.toml"
]
self;

craneLib = (crane.mkLib pkgs).overrideToolchain rust;

commonArgs = {
pname = cargo.toml.package.name;
inherit (cargo.toml.package) version;
inherit src;
};

cargoArtifacts = craneLib.buildDepsOnly commonArgs;

commonArtifactArgs = commonArgs // {inherit cargoArtifacts;};

cargoClippy = craneLib.cargoClippy (commonArtifactArgs // {cargoClippyExtraArgs = "--all-targets --workspace -- --deny warnings";});
cargoFmt = craneLib.cargoFmt commonArtifactArgs;
cargoNextest = craneLib.cargoNextest commonArtifactArgs;

buildPackage = extraArgs: craneLib.buildPackage (commonArtifactArgs // extraArgs);
nativeBin = buildPackage {};
wasm32WasiBin = buildPackage {
nativeBuildInputs = [enarxBin];

CARGO_BUILD_TARGET = "wasm32-wasi";
CARGO_TARGET_WASM_WASI32_RUNNER = "enarx run --wasmcfgfile ${self}/Enarx.toml";
};
x86_64LinuxMuslBin = buildPackage {
CARGO_BUILD_TARGET = "x86_64-unknown-linux-musl";
CARGO_BUILD_RUSTFLAGS = "-C target-feature=+crt-static";
};

buildImage = bin:
pkgs.dockerTools.buildImage {
inherit (cargo.toml.package) name;
tag = cargo.toml.package.version;
contents = [
bin
];
config.Cmd = [cargo.toml.package.name];
config.Env = ["PATH=${bin}/bin"];
with flake-utils.lib.system;
flake-utils.lib.eachSystem [
aarch64-darwin
aarch64-linux
powerpc64le-linux
x86_64-darwin
x86_64-linux
] (
system: let
pkgs = import nixpkgs {
inherit system;
overlays = [(import rust-overlay)];
};
in {
formatter = pkgs.alejandra;

checks.clippy = cargoClippy;
checks.fmt = cargoFmt;
checks.nextest = cargoNextest;

packages =
{
default = nativeBin;

"${cargo.toml.package.name}" = nativeBin;
"${cargo.toml.package.name}-x86_64-unknown-linux-musl" = x86_64LinuxMuslBin;
"${cargo.toml.package.name}-x86_64-unknown-linux-musl-oci" = buildImage x86_64LinuxMuslBin;
}
# TODO: Remove once an overlay is created in enarx
// (pkgs.lib.optionalAttrs (system != "powerpc64le-linux") {
"${cargo.toml.package.name}-wasm32-wasi" = wasm32WasiBin;
});

devShells.default = pkgs.mkShell {
buildInputs =
[
pkgs.openssl
pkgs.wasmtime

rust

# TODO: Add and use an overlay
enarxBin = enarx.packages.${system}.default;

rust = pkgs.rust-bin.fromRustupToolchainFile "${self}/rust-toolchain.toml";

cargo.toml = builtins.fromTOML (builtins.readFile "${self}/Cargo.toml");
src =
pkgs.nix-gitignore.gitignoreRecursiveSource [
"*.nix"
"*.yml"
"/.github"
"flake.lock"
"LICENSE"
"rust-toolchain.toml"
]
# TODO: Add Enarx, once an overlay is created in enarx
++ (pkgs.lib.optional (system != "powerpc64le-linux") enarxBin);
};
}
);
self;

craneLib = (crane.mkLib pkgs).overrideToolchain rust;

commonArgs = {
pname = cargo.toml.package.name;
inherit (cargo.toml.package) version;
inherit src;
};

cargoArtifacts = craneLib.buildDepsOnly commonArgs;

commonArtifactArgs = commonArgs // {inherit cargoArtifacts;};

cargoClippy = craneLib.cargoClippy (commonArtifactArgs // {cargoClippyExtraArgs = "--all-targets --workspace -- --deny warnings";});
cargoFmt = craneLib.cargoFmt commonArtifactArgs;
cargoNextest = craneLib.cargoNextest commonArtifactArgs;

buildPackage = extraArgs: craneLib.buildPackage (commonArtifactArgs // extraArgs);
nativeBin = buildPackage {};
wasm32WasiBin = buildPackage {
nativeBuildInputs = [enarxBin];

CARGO_BUILD_TARGET = "wasm32-wasi";
CARGO_TARGET_WASM_WASI32_RUNNER = "enarx run --wasmcfgfile ${self}/Enarx.toml";
};
x86_64LinuxMuslBin = buildPackage {
CARGO_BUILD_TARGET = "x86_64-unknown-linux-musl";
CARGO_BUILD_RUSTFLAGS = "-C target-feature=+crt-static";
};

buildImage = bin:
pkgs.dockerTools.buildImage {
inherit (cargo.toml.package) name;
tag = cargo.toml.package.version;
contents = [
bin
];
config.Cmd = [cargo.toml.package.name];
config.Env = ["PATH=${bin}/bin"];
};
in {
formatter = pkgs.alejandra;

checks.clippy = cargoClippy;
checks.fmt = cargoFmt;
checks.nextest = cargoNextest;

packages =
{
default = nativeBin;

"${cargo.toml.package.name}" = nativeBin;
"${cargo.toml.package.name}-x86_64-unknown-linux-musl" = x86_64LinuxMuslBin;
"${cargo.toml.package.name}-x86_64-unknown-linux-musl-oci" = buildImage x86_64LinuxMuslBin;
}
# TODO: Remove once an overlay is created in enarx
// (pkgs.lib.optionalAttrs (system != powerpc64le-linux) {
"${cargo.toml.package.name}-wasm32-wasi" = wasm32WasiBin;
});

devShells.default = pkgs.mkShell {
buildInputs =
[
pkgs.openssl
pkgs.wasmtime

rust
]
# TODO: Add Enarx, once an overlay is created in enarx
++ (pkgs.lib.optional (system != powerpc64le-linux) enarxBin);
};
}
);
}

0 comments on commit 97f363d

Please sign in to comment.