From c213686bbcd797e4376119b3daa888a7dcfe0a3a Mon Sep 17 00:00:00 2001 From: Sridhar Ratnakumar Date: Fri, 25 Oct 2024 10:06:10 -0400 Subject: [PATCH 1/2] fix(hack): Make cachix available at compile time --- crates/omnix-ci/crate.nix | 3 +++ crates/omnix-cli/crate.nix | 4 +++- crates/omnix-hack/crate.nix | 4 +++- crates/omnix-health/crate.nix | 1 + crates/omnix-health/src/check/caches.rs | 2 +- nix/modules/flake-parts/devshell.nix | 1 + 6 files changed, 12 insertions(+), 3 deletions(-) diff --git a/crates/omnix-ci/crate.nix b/crates/omnix-ci/crate.nix index accf0544..c9e501e3 100644 --- a/crates/omnix-ci/crate.nix +++ b/crates/omnix-ci/crate.nix @@ -39,6 +39,9 @@ in INSPECT_FLAKE NIX_SYSTEMS ; + inherit (rust-project.crates."omnix-health".crane.args) + CACHIX_BIN + ; DEVOUR_FLAKE = inputs.devour-flake; # This value is set in omnix-cli/crate.nix. diff --git a/crates/omnix-cli/crate.nix b/crates/omnix-cli/crate.nix index aeba2580..39c69f4a 100644 --- a/crates/omnix-cli/crate.nix +++ b/crates/omnix-cli/crate.nix @@ -26,7 +26,6 @@ in # > error: don't yet have a `targetPackages.darwin.LibsystemCross for x86_64-apple-darwin` (if (stdenv.isDarwin && stdenv.isAarch64) then pkgsStatic.libiconv else pkgs.libiconv) pkgs.pkg-config - pkgs.cachix ]; buildInputs = lib.optionals pkgs.stdenv.isDarwin ( @@ -49,6 +48,9 @@ in inherit (rust-project.crates."omnix-init".crane.args) OM_INIT_REGISTRY ; + inherit (rust-project.crates."omnix-health".crane.args) + CACHIX_BIN + ; # To avoid unnecessary rebuilds, start from cleaned source, and then add the Nix files necessary to `nix run` it. Finally, add any files required by the Rust build. OMNIX_SOURCE = lib.cleanSourceWith { diff --git a/crates/omnix-hack/crate.nix b/crates/omnix-hack/crate.nix index 20206310..767d9869 100644 --- a/crates/omnix-hack/crate.nix +++ b/crates/omnix-hack/crate.nix @@ -14,11 +14,13 @@ IOKit ] ); - nativeBuildInputs = [ pkgs.cachix ]; inherit (rust-project.crates."nix_rs".crane.args) DEFAULT_FLAKE_SCHEMAS INSPECT_FLAKE NIX_SYSTEMS ; + inherit (rust-project.crates."omnix-health".crane.args) + CACHIX_BIN + ; }; } diff --git a/crates/omnix-health/crate.nix b/crates/omnix-health/crate.nix index 8d4775d5..0605bb74 100644 --- a/crates/omnix-health/crate.nix +++ b/crates/omnix-health/crate.nix @@ -25,6 +25,7 @@ in INSPECT_FLAKE NIX_SYSTEMS ; + CACHIX_BIN = lib.getExe pkgs.cachix; nativeBuildInputs = with pkgs; [ nix # Tests need nix cli ]; diff --git a/crates/omnix-health/src/check/caches.rs b/crates/omnix-health/src/check/caches.rs index c6c871d3..484444a3 100644 --- a/crates/omnix-health/src/check/caches.rs +++ b/crates/omnix-health/src/check/caches.rs @@ -94,7 +94,7 @@ impl CachixCache { /// Run `cachix use` for this cache pub async fn cachix_use(&self) -> anyhow::Result<()> { - let mut cmd = tokio::process::Command::new("cachix"); + let mut cmd = tokio::process::Command::new(env!("CACHIX_BIN")); cmd.arg("use").arg(&self.0); let status = cmd.spawn()?.wait().await?; if !status.success() { diff --git a/nix/modules/flake-parts/devshell.nix b/nix/modules/flake-parts/devshell.nix index 90f4a5ec..16b39a8b 100644 --- a/nix/modules/flake-parts/devshell.nix +++ b/nix/modules/flake-parts/devshell.nix @@ -21,6 +21,7 @@ in INSPECT_FLAKE OMNIX_SOURCE OM_INIT_REGISTRY + CACHIX_BIN ; packages = with pkgs; [ From 195f96cc4a4c06cdcd3082a73918dc3db6251d98 Mon Sep 17 00:00:00 2001 From: Sridhar Ratnakumar Date: Fri, 25 Oct 2024 10:20:47 -0400 Subject: [PATCH 2/2] nix: Adapt closure-size to include cachix dep --- nix/modules/flake-parts/closure-size.nix | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/nix/modules/flake-parts/closure-size.nix b/nix/modules/flake-parts/closure-size.nix index d3e956a7..b22007ba 100644 --- a/nix/modules/flake-parts/closure-size.nix +++ b/nix/modules/flake-parts/closure-size.nix @@ -1,7 +1,13 @@ { ... }: let - maxSizeInMB = 60; + + maxSize = 1000000 * maxSizeInMB.total; + maxSizeInMB = rec { + total = omnix + cachix; + omnix = 60; + cachix = 150; + }; in { perSystem = { pkgs, ... }: { @@ -13,7 +19,7 @@ in meta.description = "Check that omnix's nix closure size remains reasonably small"; text = '' set -o pipefail - MAX_CLOSURE_SIZE=$(echo "${builtins.toString maxSizeInMB} * 1000000" | bc) + MAX_CLOSURE_SIZE=${builtins.toString maxSize} CLOSURE_SIZE=$(nix path-info --json -S .#default | jq '.[0]'.closureSize) echo "Omnix closure size: $CLOSURE_SIZE" echo " Max closure size: $MAX_CLOSURE_SIZE"