diff --git a/.bazelignore b/.bazelignore new file mode 100644 index 0000000..92b2793 --- /dev/null +++ b/.bazelignore @@ -0,0 +1 @@ +.direnv diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c4b1ce9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +# Misc +/.direnv +/.envrc + +# Bazel +bazel-* +MODULE.bazel.lock + diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..8407bf9 --- /dev/null +++ b/flake.nix @@ -0,0 +1,69 @@ +{ + description = "fpga-assembler"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/2c8d3f48d33929642c1c12cd243df4cc7d2ce434"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = + { + self, + nixpkgs, + flake-utils, + }@inputs: + flake-utils.lib.eachDefaultSystem ( + system: + let + pkgs = import nixpkgs { + inherit system; + }; + common = with pkgs; { + bazel = bazel_7; + jdk = jdk; + }; + in + { + devShells.default = + let + # There is too much volatility between even micro-versions of + # newer clang-format. Use slightly older version for now. + clang_for_formatting = pkgs.llvmPackages_17.clang-tools; + + # clang tidy: use latest. + clang_for_tidy = pkgs.llvmPackages_18.clang-tools; + in + with pkgs; + pkgs.mkShell { + packages = with pkgs; [ + git + common.bazel + common.jdk + bash + gdb + + # For clang-tidy and clang-format. + clang_for_formatting + clang_for_tidy + + # For buildifier, buildozer. + bazel-buildtools + bant + + # Profiling and sanitizers. + linuxPackages_latest.perf + pprof + perf_data_converter + valgrind + ]; + + CLANG_TIDY = "${clang_for_tidy}/bin/clang-tidy"; + CLANG_FORMAT = "${clang_for_formatting}/bin/clang-format"; + + shellHook = '' + exec bash + ''; + }; + } + ); +}