about summary refs log tree commit diff
path: root/third_party
diff options
context:
space:
mode:
authorVincent Ambo <tazjin@google.com>2020-05-17T19·46+0100
committerVincent Ambo <tazjin@google.com>2020-05-17T19·46+0100
commit8944370b7f92c99c3a872218f717f11ebbf716ca (patch)
tree8b4be49b292623f29e917bf554564698ffbd0eed /third_party
parent9d865dbb1fed8da4ff471379f803814521298d16 (diff)
feat(3p/nix): Add new Meson-based derivation for building Nix r/745
This builds the mesonified Nix and is compatible with the depot
structure and nix-shell.
Diffstat (limited to 'third_party')
-rw-r--r--third_party/nix/default.nix71
1 files changed, 71 insertions, 0 deletions
diff --git a/third_party/nix/default.nix b/third_party/nix/default.nix
new file mode 100644
index 0000000000..a5a8831f05
--- /dev/null
+++ b/third_party/nix/default.nix
@@ -0,0 +1,71 @@
+{ pkgs ? (import <nixpkgs> {}).third_party, ... }:
+
+let
+  stdenv = with pkgs; overrideCC clangStdenv clang_9;
+
+  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 stdenv.mkDerivation {
+  name = "nix";
+  src = ./.;
+
+  nativeBuildInputs = with pkgs; [
+    bison
+    meson
+    ninja
+    pkgconfig
+    libxml2
+    libxslt
+  ];
+
+ # TODO(tazjin): Some of these might only be required for native inputs
+  buildInputs = with pkgs; [
+    aws-s3-cpp
+    boost
+    brotli
+    bzip2
+    curl
+    editline
+    flex
+    libseccomp
+    libsodium
+    openssl
+    sqlite
+    xz
+  ];
+
+  propagatedBuildInputs = [
+    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/remote-build
+  '';
+
+  # TODO(tazjin): equivalent of --enable-gc
+  # TODO(tazjin): integration test setup?
+  # TODO(tazjin): docs generation?
+}