Initial commit: Modular Clang C++ Nix environment and problem files
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
{ pkgs, treefmt-nix, llvmVersion }:
|
||||
let
|
||||
treefmt = import ./treefmt.nix { inherit pkgs treefmt-nix; };
|
||||
devShell = import ./devshells/default.nix { inherit pkgs llvmVersion; };
|
||||
in
|
||||
{
|
||||
inherit devShell;
|
||||
formatter = treefmt.config.build.wrapper;
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{ 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)"
|
||||
'';
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{ pkgs, treefmt-nix }:
|
||||
treefmt-nix.lib.evalModule pkgs {
|
||||
projectRootFile = "flake.nix";
|
||||
|
||||
# Configure individual formatters
|
||||
programs = {
|
||||
# Nix formatter
|
||||
nixpkgs-fmt.enable = true;
|
||||
|
||||
# C++ formatter
|
||||
clang-format.enable = true;
|
||||
};
|
||||
|
||||
# Optional settings
|
||||
settings.formatter.clang-format.includes = [ "*.cpp" "*.h" "*.hpp" "*.c" ];
|
||||
}
|
||||
Reference in New Issue
Block a user