Skip to content

Instantly share code, notes, and snippets.

@travisstaloch
Last active September 21, 2025 02:45
Show Gist options
  • Select an option

  • Save travisstaloch/4916c83b2a3b634a071bfb014153e47d to your computer and use it in GitHub Desktop.

Select an option

Save travisstaloch/4916c83b2a3b634a071bfb014153e47d to your computer and use it in GitHub Desktop.
shell.nix which provides llvm21 deps to build zig 0.16.0-dev from source
#
# provides llvm21 deps to build zig 0.16.0-dev from source
# https://github.com/ziglang/zig/wiki/Building-Zig-From-Source#dependencies
# https://github.com/ziglang/zig/wiki/Building-Zig-From-Source#option-b-use-a-pre-built-zig-binary
#
# first build with cmake to produce 'A recent prior build of Zig', zig1, `build/stage3/bin/zig`.
# and then subsequently with zig1 to quickly produce `stage3/bin/zig`
#
# ```
# $ cat build/build.sh
# # build zig1 with cmake
# build_type=${1:-"Debug"}
# echo "making $build_type build"
# cmake .. -DCMAKE_PREFIX_PATH=/usr -DZIG_NO_LIB=on -G Ninja -DCMAKE_BUILD_TYPE=$build_type && \
# ninja -j4 install
#```
#
# use zig1 to quickly produce `stage3/bin/zig`
#
# $ build/stage3/bin/zig build -p stage3 --release=small --search-prefix "/nix/store/105f68whb70fafyw1yiz4zslx2w2jms0-llvm-21.1.1-dev" --zig-lib-dir "$(realpath lib)"
#
{ pkgs ? import (fetchTarball {
url = "https://github.com/NixOS/nixpkgs/archive/027817845f385748e340db8ce56ccaab00b47f92.tar.gz";
}) {} }:
pkgs.mkShell {
nativeBuildInputs = [ pkgs.cmake pkgs.ninja pkgs.python3 ];
buildInputs = [
# TODO find and remove unnecessary pkgs
pkgs.llvmPackages_21.libclang
pkgs.llvmPackages_21.clang
pkgs.llvmPackages_21.clang-unwrapped
pkgs.llvmPackages_21.lld
pkgs.llvmPackages_21.lld.dev
pkgs.llvmPackages_21.llvm
pkgs.llvmPackages_21.libllvm
pkgs.llvmPackages_21.llvm.dev
pkgs.zlib
pkgs.zlib.dev
pkgs.zstd
pkgs.zstd.dev
pkgs.libxml2
];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment