From 0cf4efac893833c9b5370228f10a73b791d32efc Mon Sep 17 00:00:00 2001 From: Quentin Dufour Date: Thu, 24 Mar 2022 10:28:53 +0100 Subject: [PATCH] Compile kuberetes-discovery only when release=true --- default.nix | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/default.nix b/default.nix index 053176f7..21a413b2 100644 --- a/default.nix +++ b/default.nix @@ -47,6 +47,13 @@ in let ]; }; + /* + Cargo2nix provides many overrides by default, you can take inspiration from them: + https://github.com/cargo2nix/cargo2nix/blob/master/overlay/overrides.nix + + You can have a complete list of the available options by looking at the overriden object, mkcrate: + https://github.com/cargo2nix/cargo2nix/blob/master/overlay/mkcrate.nix + */ overrides = pkgs.rustBuilder.overrides.all ++ [ /* [1] We need to alter Nix hardening to be able to statically compile: PIE, @@ -73,6 +80,21 @@ in let ''; } else {}); }) + + /* + We ship some parts of the code disabled by default by putting them behind a flag. + It speeds up the compilation (when the feature is not required) and released crates have less dependency by default (less attack surface, disk space, etc.). + But we want to ship these additional features when we release Garage. + In the end, we chose to exclude all features from debug builds while putting (all of) them in the release builds. + Currently, the only feature of Garage is kubernetes-discovery from the garage_rpc crate. + */ + (pkgs.rustBuilder.rustLib.makeOverride { + name = "garage_rpc"; + overrideArgs = old: + { + features = if release then [ "kubernetes-discovery" ] else []; + }; + }) ]; packageFun = import ./Cargo.nix;