tvl-depot/third_party/nix/default.nix
Luke Granger-Brown 4de63f784c fix(3p/nix): propagate dependencies which are needed by people linking in nix
This includes absl, which we install into the output, and boost and the boehm GC,
which are moved to propagated deps.

Change-Id: I8f9f9795ff92e26b2320359064241d7fd59c2d33
Reviewed-on: https://cl.tvl.fyi/c/depot/+/549
Reviewed-by: tazjin <mail@tazj.in>
2020-06-21 23:49:19 +00:00

77 lines
1.8 KiB
Nix

{ pkgs ? (import ../.. {}).third_party
, buildType ? "release", ... }:
let
aws-s3-cpp = pkgs.aws-sdk-cpp.override {
apis = ["s3" "transfer"];
customMemoryManagement = false;
};
# TODO(tazjin): this is copied from the original derivation, but what
# is it for?
largeBoehm = pkgs.boehmgc.override {
enableLargeConfig = true;
};
in pkgs.llvmPackages.libcxxStdenv.mkDerivation {
pname = "tazjix";
version = "2.3.4";
src = ./.;
# Abseil's sources need to be symlinked into Nix' sources.
postUnpack = ''
ln -fs ${pkgs.abseil_cpp.drvAttrs.src} nix/abseil_cpp
ln -fs ${pkgs.glog.drvAttrs.src} nix/glog
'';
nativeBuildInputs = with pkgs; [
bison
clang-tools
cmake
pkgconfig
libxml2
libxslt
(import ./clangd.nix pkgs)
];
# TODO(tazjin): Some of these might only be required for native inputs
buildInputs = with pkgs; [
aws-s3-cpp
brotli
bzip2
curl
editline
flex
libseccomp
libsodium
openssl
sqlite
xz
];
propagatedBuildInputs = with pkgs; [
boost
largeBoehm
];
# Install the various symlinks to the Nix binary which users expect
# to exist.
postInstall = ''
ln -s $out/bin/nix $out/bin/nix-build
ln -s $out/bin/nix $out/bin/nix-channel
ln -s $out/bin/nix $out/bin/nix-collect-garbage
ln -s $out/bin/nix $out/bin/nix-copy-closure
ln -s $out/bin/nix $out/bin/nix-daemon
ln -s $out/bin/nix $out/bin/nix-env
ln -s $out/bin/nix $out/bin/nix-hash
ln -s $out/bin/nix $out/bin/nix-instantiate
ln -s $out/bin/nix $out/bin/nix-prefetch-url
ln -s $out/bin/nix $out/bin/nix-shell
ln -s $out/bin/nix $out/bin/nix-store
mkdir -p $out/libexec/nix
ln -s $out/bin/nix $out/libexec/nix/build-remote
'';
# TODO(tazjin): integration test setup?
# TODO(tazjin): docs generation?
}