• NixOS had some problems particularly the llvm and clang compilers that complained a lot about missing standard libraries and headers.

    I think it’s likely that you’re trying to just add clang/llvm toolchains to your development shell like this:

    pkgs.mkShell { packages = [
      llvmPackages_16.clang
    ]; };
    

    But you actually want something like:

    (mkShell.override { inherit (llvmPackages_16) stdenv; }) {
      packages = [ ];
    }
    
    • Neither actually, I think the issues I encounter happened before the llvm/clang packages get renamed to llvmPackages_16.* and one of the approach I did was adding the nix-shell initialization into .bashrc at the time to workaround my ignorance of NixOS.

      There weren’t a lot of documentation to address my troubles with NixOS at the time, so yesterday evening, I reinstalled NixOS on a VM and started on reading up documentation to re-learn NixOS and trying to get it working. It still confusing however, but I’m taking my time to learn NixOS with a honest try.