aboutsummaryrefslogtreecommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix116
1 files changed, 54 insertions, 62 deletions
diff --git a/flake.nix b/flake.nix
index b1cb7dbb..ccaeba29 100644
--- a/flake.nix
+++ b/flake.nix
@@ -6,88 +6,80 @@
inputs.nixpkgs.url =
"github:NixOS/nixpkgs/7c4869c47090dd7f9f1bdfb49a22aea026996815";
- inputs.flake-compat.url = "github:nix-community/flake-compat";
-
- inputs.cargo2nix = {
- # As of 2022-10-18: two small patches over unstable branch, one for clippy and one to fix feature detection
- #url = "github:Alexis211/cargo2nix/a7a61179b66054904ef6a195d8da736eaaa06c36";
-
- # As of 2023-04-25:
- # - my two patches were merged into unstable (one for clippy and one to "fix" feature detection)
- # - rustc v1.66
- # url = "github:cargo2nix/cargo2nix/8fb57a670f7993bfc24099c33eb9c5abb51f29a2";
-
- # Mainline cargo2nix as of of 2025-01-12 (branch release-0.11.0)
- url = "github:cargo2nix/cargo2nix/ae19a9e1f8f0880c088ea155ab66cee1fa001f59";
-
- # Rust overlay as of 2025-01-12
- inputs.rust-overlay.url =
- "github:oxalica/rust-overlay/162ab0edc2936508470199b2e8e6c444a2535019";
+ # Rust overlay as of 2025-01-12
+ inputs.rust-overlay.url =
+ "github:oxalica/rust-overlay/162ab0edc2936508470199b2e8e6c444a2535019";
+ inputs.rust-overlay.inputs.nixpkgs.follows = "nixpkgs";
- inputs.nixpkgs.follows = "nixpkgs";
- inputs.flake-compat.follows = "flake-compat";
- };
+ inputs.crane.url = "github:ipetkov/crane";
- inputs.flake-utils.follows = "cargo2nix/flake-utils";
+ inputs.flake-compat.url = "github:nix-community/flake-compat";
+ inputs.flake-utils.url = "github:numtide/flake-utils";
- outputs = { self, nixpkgs, cargo2nix, flake-utils, ... }:
+ outputs = { self, nixpkgs, flake-utils, crane, rust-overlay, ... }:
let
- git_version = self.lastModifiedDate;
compile = import ./nix/compile.nix;
in
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
+ packageFor = target: release: (compile {
+ inherit system target nixpkgs crane rust-overlay release;
+ }).garage;
+ testWith = extraTestEnv: (compile {
+ inherit system nixpkgs crane rust-overlay extraTestEnv;
+ release = false;
+ }).garage-test;
in
{
- packages =
- let
- packageFor = target: (compile {
- inherit system git_version target;
- pkgsSrc = nixpkgs;
- cargo2nixOverlay = cargo2nix.overlays.default;
- release = true;
- }).workspace.garage { compileMode = "build"; };
- in
- {
- # default = native release build
- default = packageFor null;
- # other = cross-compiled, statically-linked builds
- amd64 = packageFor "x86_64-unknown-linux-musl";
- i386 = packageFor "i686-unknown-linux-musl";
- arm64 = packageFor "aarch64-unknown-linux-musl";
- arm = packageFor "armv6l-unknown-linux-musl";
+ packages = {
+ # default = native release build
+ default = packageFor null true;
+
+ # <arch> = cross-compiled, statically-linked release builds
+ amd64 = packageFor "x86_64-unknown-linux-musl" true;
+ i386 = packageFor "i686-unknown-linux-musl" true;
+ arm64 = packageFor "aarch64-unknown-linux-musl" true;
+ arm = packageFor "armv6l-unknown-linux-musl" true;
+
+ # dev = native dev build
+ dev = packageFor null false;
+
+ # test = cargo test
+ tests = testWith {};
+ tests-lmdb = testWith {
+ GARAGE_TEST_INTEGRATION_DB_ENGINE = "lmdb";
+ };
+ tests-sqlite = testWith {
+ GARAGE_TEST_INTEGRATION_DB_ENGINE = "sqlite";
};
+ };
# ---- developpment shell, for making native builds only ----
devShells =
let
- shellWithPackages = (packages: (compile {
- inherit system git_version;
- pkgsSrc = nixpkgs;
- cargo2nixOverlay = cargo2nix.overlays.default;
- }).workspaceShell { inherit packages; });
+ targets = compile {
+ inherit system nixpkgs crane rust-overlay;
+ };
in
{
- default = shellWithPackages
- (with pkgs; [
- rustfmt
- clang
- mold
- ]);
+ default = targets.devShell;
# import the full shell using `nix develop .#full`
- full = shellWithPackages (with pkgs; [
- rustfmt
- rust-analyzer
- clang
- mold
- # ---- extra packages for dev tasks ----
- cargo-audit
- cargo-outdated
- cargo-machete
- nixpkgs-fmt
- ]);
+ full = pkgs.mkShell {
+ buildInputs = with pkgs; [
+ targets.toolchain
+ protobuf
+ clang
+ mold
+ # ---- extra packages for dev tasks ----
+ rust-analyzer
+ cargo-audit
+ cargo-outdated
+ cargo-machete
+ nixpkgs-fmt
+ ];
+ };
};
});
}