# This is a nix-shell for use with the nix package manager.
# If you have nix installed, you may simply run `nix-shell`
# in this repo, and have all dependencies ready in the new shell.

{ pkgs ? import <nixpkgs> {} }:
let
  verible_used_stdenv = pkgs.stdenv;
  #verible_used_stdenv = pkgs.gcc15Stdenv;
  #verible_used_stdenv = pkgs.clang19Stdenv;
  bazel = pkgs.bazel_8;
in
verible_used_stdenv.mkDerivation {
  name = "verible-build-environment";
  buildInputs = with pkgs;
    [
      bazel
      git

      # For scripts used inside bzl rules and tests
      gnused

      # To run error-log-analyzer
      python3
      python3Packages.mdutils
      ripgrep

      # To manually run export_json_examples
      python3Packages.anytree

      # For using --//bazel:use_local_flex_bison if desired
      flex
      bison

      # To build vscode vsix package
      nodejs

      # Ease development
      lcov              # coverage html generation.
      bazel-buildtools  # buildifier

      llvmPackages_22.clang-tools    # for clang-tidy
      llvmPackages_19.clang-tools    # for clang-format
    ];
  shellHook = ''
      # clang tidy: use latest.
      export CLANG_TIDY=${pkgs.llvmPackages_22.clang-tools}/bin/clang-tidy

      # Last version that current github CI supports.
      export CLANG_FORMAT=${pkgs.llvmPackages_19.clang-tools}/bin/clang-format
  '';
}
