Skip to content

Commit

Permalink
nix: include darwin deps inside devShell, too
Browse files Browse the repository at this point in the history
Summary: Without `devShell` providing the needed Darwin-specific inputs, `cargo
build` does not work inside a `nix develop` or `direnv` environment; libgit2 in
particular fails on being able to find the Security framework.

The actual `nix build` invocation however *does* work because we correctly
include those dependencies in the package `buildInputs`. So just factor them
out, and use them in both places.

Signed-off-by: Austin Seipp <[email protected]>
Change-Id: I484bf381ca31c29c4c39fb6d184bdd21
  • Loading branch information
thoughtpolice committed Nov 4, 2023
1 parent 5fc649c commit 2401bf9
Showing 1 changed file with 9 additions and 6 deletions.
15 changes: 9 additions & 6 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,13 @@
cargo = rust-version;
};

# these are needed in both devShell and buildInputs
darwinDeps = with pkgs; lib.optionals stdenv.isDarwin [
darwin.apple_sdk.frameworks.Security
darwin.apple_sdk.frameworks.SystemConfiguration
libiconv
];

in
{
packages = {
Expand All @@ -68,11 +75,7 @@
];
buildInputs = with pkgs; [
openssl zstd libgit2 libssh2
] ++ lib.optionals stdenv.isDarwin [
darwin.apple_sdk.frameworks.Security
darwin.apple_sdk.frameworks.SystemConfiguration
libiconv
];
] ++ darwinDeps;

ZSTD_SYS_USE_PKG_CONFIG = "1";
LIBSSH2_SYS_USE_PKG_CONFIG = "1";
Expand Down Expand Up @@ -129,7 +132,7 @@

# For building the documentation website
poetry
];
] ++ darwinDeps;

shellHook = ''
export RUST_BACKTRACE=1
Expand Down

0 comments on commit 2401bf9

Please sign in to comment.