Skip to content

Commit

Permalink
adding c/c++ nix shell
Browse files Browse the repository at this point in the history
  • Loading branch information
LegitCamper committed Oct 9, 2023
1 parent 49d3bcf commit 8160389
Showing 1 changed file with 68 additions and 0 deletions.
68 changes: 68 additions & 0 deletions nix/devshells/c&cpp/flake.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
{
description = "C/C++ environment";

inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
utils.url = "github:numtide/flake-utils";
};

outputs = { self, nixpkgs, utils, ... }@inputs:
utils.lib.eachDefaultSystem (system:
let
p = import nixpkgs { inherit system; };
llvm = p.llvmPackages_latest;

# simple script which replaces the functionality of make
# it works with <math.h> and includes debugging symbols by default
# it will be updated as per needs

# arguments: outfile
# basic usage example: mk main [flags]
mymake = p.writeShellScriptBin "mk" ''
if [ -f "$1.c" ]; then
i="$1.c"
c=$CC
else
i="$1.cpp"
c=$CXX
fi
o=$1
shift
$c -ggdb $i -o $o -lm -Wall $@
'';
in {
devShell = p.mkShell.override { stdenv = p.clangStdenv; } rec {
packages = with p; [
# builder
gnumake
cmake
bear

# debugger
llvm.lldb
gdb

# fix headers not found
clang-tools

# LSP and compiler
llvm.libstdcxxClang

# other tools
cppcheck
llvm.libllvm
valgrind
mymake

# stdlib for cpp
llvm.libcxx

# libs
glm
SDL2
SDL2_gfx
];
name = "C";
};
});
}

0 comments on commit 8160389

Please sign in to comment.