39 lines
838 B
Nix
39 lines
838 B
Nix
{ pkgs, llvmVersion }:
|
|
let
|
|
# Select the correct LLVM/Clang version
|
|
llvmPackages = pkgs."llvmPackages_${llvmVersion}";
|
|
in
|
|
pkgs.mkShell {
|
|
name = "clang-cpp-shell";
|
|
|
|
# Native dependencies (e.g., compilers, build tools)
|
|
nativeBuildInputs = with pkgs; [
|
|
# Compiler and core tools
|
|
llvmPackages.clang
|
|
llvmPackages.lld
|
|
llvmPackages.bintools
|
|
|
|
# Language-specific tools
|
|
llvmPackages.clang-tools # Includes clang-format, clang-tidy
|
|
cmake
|
|
ninja
|
|
gdb
|
|
valgrind
|
|
nixpkgs-fmt
|
|
];
|
|
|
|
# Runtime dependencies (e.g., shared libraries)
|
|
buildInputs = with pkgs; [
|
|
# Common libraries (example)
|
|
libcxx
|
|
boost
|
|
];
|
|
|
|
# Environment variables
|
|
shellHook = ''
|
|
export CC=clang
|
|
export CXX=clang++
|
|
echo "Clang version: $(${llvmPackages.clang}/bin/clang --version | head -n 1)"
|
|
'';
|
|
}
|