diff options
-rw-r--r-- | third_party/nix/clangd.nix | 30 | ||||
-rw-r--r-- | third_party/nix/default.nix | 2 |
2 files changed, 31 insertions, 1 deletions
diff --git a/third_party/nix/clangd.nix b/third_party/nix/clangd.nix new file mode 100644 index 000000000000..9494e756b16f --- /dev/null +++ b/third_party/nix/clangd.nix @@ -0,0 +1,30 @@ +# Create a clangd wrapper script that can be used with this project. +# The default Nix wrapper only works with C projects, not C++ +# projects. +# +# The CPATH construction logic is lifted from the original wrapper +# script. + +pkgs: + +pkgs.writeShellScriptBin "nix-clangd" '' + buildcpath() { + local path + while (( $# )); do + case $1 in + -isystem) + shift + path=$path''${path:+':'}$1 + esac + shift + done + echo $path + } + + export CPATH=''${CPATH}''${CPATH:+':'}:$(buildcpath ''${NIX_CFLAGS_COMPILE}) + export CPATH=${pkgs.glibc.dev}/include''${CPATH:+':'}''${CPATH} + export CPLUS_INCLUDE_PATH=${pkgs.llvmPackages.libcxx}/include/c++/v1:''${CPATH} + + # TODO(tazjin): Configurable commands directory? + exec -a clangd ${pkgs.llvmPackages.clang-unwrapped}/bin/clangd $@ +'' diff --git a/third_party/nix/default.nix b/third_party/nix/default.nix index c21a6d00c946..13301984de92 100644 --- a/third_party/nix/default.nix +++ b/third_party/nix/default.nix @@ -32,6 +32,7 @@ in stdenv.mkDerivation { pkgconfig libxml2 libxslt + (import ./clangd.nix pkgs) ]; # TODO(tazjin): Some of these might only be required for native inputs @@ -80,7 +81,6 @@ in stdenv.mkDerivation { ln -s $out/bin/nix $out/libexec/nix/build-remote ''; - # TODO(tazjin): equivalent of --enable-gc # TODO(tazjin): integration test setup? # TODO(tazjin): docs generation? } |