summary refs log tree commit diff
path: root/third_party/bazel/rules_haskell/nixpkgs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/bazel/rules_haskell/nixpkgs')
-rw-r--r--third_party/bazel/rules_haskell/nixpkgs/BUILD.bazel0
-rw-r--r--third_party/bazel/rules_haskell/nixpkgs/NOTUSED0
-rw-r--r--third_party/bazel/rules_haskell/nixpkgs/cc-toolchain.nix36
-rw-r--r--third_party/bazel/rules_haskell/nixpkgs/default.nix6
4 files changed, 42 insertions, 0 deletions
diff --git a/third_party/bazel/rules_haskell/nixpkgs/BUILD.bazel b/third_party/bazel/rules_haskell/nixpkgs/BUILD.bazel
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/third_party/bazel/rules_haskell/nixpkgs/BUILD.bazel
diff --git a/third_party/bazel/rules_haskell/nixpkgs/NOTUSED b/third_party/bazel/rules_haskell/nixpkgs/NOTUSED
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/third_party/bazel/rules_haskell/nixpkgs/NOTUSED
diff --git a/third_party/bazel/rules_haskell/nixpkgs/cc-toolchain.nix b/third_party/bazel/rules_haskell/nixpkgs/cc-toolchain.nix
new file mode 100644
index 0000000000..1795dc55b7
--- /dev/null
+++ b/third_party/bazel/rules_haskell/nixpkgs/cc-toolchain.nix
@@ -0,0 +1,36 @@
+with import ./. {};
+with darwin.apple_sdk.frameworks;
+
+# XXX On Darwin, workaround
+# https://github.com/NixOS/nixpkgs/issues/42059. See also
+# https://github.com/NixOS/nixpkgs/pull/41589.
+let cc = runCommand "cc-wrapper-bazel" {
+    buildInputs = [ pkgs.stdenv.cc makeWrapper ];
+  }
+  ''
+    mkdir -p $out/bin
+
+    # Copy the content of pkgs.stdenv.cc
+    for i in ${pkgs.stdenv.cc}/bin/*
+    do
+      ln -sf $i $out/bin
+    done
+
+    # Override clang
+    rm $out/bin/clang
+
+    makeWrapper ${pkgs.stdenv.cc}/bin/clang $out/bin/clang \
+      --add-flags "-isystem ${llvmPackages.libcxx}/include/c++/v1 \
+                   -F${CoreFoundation}/Library/Frameworks \
+                   -F${CoreServices}/Library/Frameworks \
+                   -F${Security}/Library/Frameworks \
+                   -F${Foundation}/Library/Frameworks \
+                   -L${libcxx}/lib \
+                   -L${darwin.libobjc}/lib"
+  '';
+  stdenv = if pkgs.stdenv.isDarwin then overrideCC pkgs.stdenv cc else pkgs.stdenv;
+in
+buildEnv {
+  name = "bazel-cc-toolchain";
+  paths = [ stdenv.cc ] ++ (if stdenv.isDarwin then [ ] else [ binutils ]);
+}
diff --git a/third_party/bazel/rules_haskell/nixpkgs/default.nix b/third_party/bazel/rules_haskell/nixpkgs/default.nix
new file mode 100644
index 0000000000..f56f04a993
--- /dev/null
+++ b/third_party/bazel/rules_haskell/nixpkgs/default.nix
@@ -0,0 +1,6 @@
+import (fetchTarball {
+   # Nixpkgs checkout from 2019-01-30.
+
+   url = https://github.com/NixOS/nixpkgs/archive/2e2ab461b76ec2c586ab126acc53f53bce49cb94.tar.gz;
+   sha256 = "17gicjn4cafpajczv49czy5r61w16kplkbz6r8hqn5rkvp4i5i9b";
+})