blob: d329b93dab70ce83dd6f23634a9935192b6472fc [file] [log] [blame]
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
fenix = {
url = "github:nix-community/fenix";
inputs.nixpkgs.follows = "nixpkgs";
};
android-nixpkgs = {
url = "github:tadfisher/android-nixpkgs";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, fenix, android-nixpkgs, ... }:
let
pkgs = import nixpkgs { system = "x86_64-linux"; };
llvm = pkgs.llvmPackages_16;
rust = with fenix.packages."x86_64-linux"; combine [
complete.cargo
complete.clippy
complete.rustc
complete.rustfmt
complete.rust-src
complete.rust-analyzer
targets."aarch64-apple-darwin".latest.rust-std
targets."aarch64-apple-ios".latest.rust-std
targets."aarch64-linux-android".latest.rust-std
targets."aarch64-unknown-linux-gnu".latest.rust-std
targets."wasm32-unknown-unknown".latest.rust-std
targets."wasm32-wasi".latest.rust-std
targets."x86_64-apple-darwin".latest.rust-std
targets."x86_64-pc-windows-msvc".latest.rust-std
targets."x86_64-unknown-linux-gnu".latest.rust-std
];
fetchVendor = { name, url, sha256, stripComponents ? 0 }:
let
authorization =
if (pkgs.lib.hasPrefix "https://raw.githubusercontent.com/<repo>/" url) then
''-H "Authorization: Bearer <token>"''
else
"";
in
pkgs.runCommandLocal "vendor-${name}"
{
buildInputs = [ pkgs.cacert ];
outputHashMode = "recursive";
outputHashAlgo = "sha256";
outputHash = sha256;
} ''
# Empty URL special cased for example
mkdir --parents $out
if [ -n "${url}" ]; then
${pkgs.curl}/bin/curl -s -S -L ${authorization} "${url}" | ${pkgs.libarchive}/bin/bsdtar -C $out -xf - --strip-components ${toString stripComponents}
fi
'';
libclang_rt_wasm32 = fetchVendor {
name = "libclang_rt_wasm32";
url = "https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-20/libclang_rt.builtins-wasm32-wasi-20.0.tar.gz";
sha256 = "AdRe1XrGeBuai1p5IMUTR7T7nhNlD1RZ8grZjVoHAKs=";
};
sdk_aarch64-unknown-linux-gnu = fetchVendor {
name = "sdk_aarch64-unknown-linux-gnu";
url = "https://commondatastorage.googleapis.com/chrome-linux-sysroot/toolchain/80fc74e431f37f590d0c85f16a9d8709088929e8/debian_bullseye_arm64_sysroot.tar.xz";
sha256 = "VwHx6SjTmnGWvEoevjThR2oxNEe9NIdnSIJ9RBgKPE8=";
};
sdk_universal-apple-darwin = fetchVendor {
name = "sdk_universal-apple-darwin";
url = ""; # User needs to supply.
sha256 = "pQpattmS9VmO3ZIQUFn66az8GSmB4IvYhTTCFn6SUmo="; # User needs to supply.
};
sdk_universal-apple-ios = fetchVendor {
name = "sdk_universal-apple-ios";
url = ""; # User needs to supply.
sha256 = "pQpattmS9VmO3ZIQUFn66az8GSmB4IvYhTTCFn6SUmo="; # User needs to supply.
};
sdk_universal-linux-android = android-nixpkgs.sdk."x86_64-linux" (sdkPkgs: with sdkPkgs; [
cmdline-tools-latest
build-tools-33-0-2
platform-tools
platforms-android-33
ndk-25-2-9519653
]);
sdk_wasm32-wasi = fetchVendor {
name = "sdk_wasm32-wasi";
url = "https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-20/wasi-sysroot-20.0.tar.gz";
sha256 = "aePDwDYWopPPDSO802BO3YWM4d/J4a4CmGP/hDPF8FY=";
};
sdk_x86_64-pc-windows-msvc = fetchVendor {
name = "sdk_x86_64-pc-windows-msvc";
url = ""; # User needs to supply.
sha256 = "pQpattmS9VmO3ZIQUFn66az8GSmB4IvYhTTCFn6SUmo="; # User needs to supply.
};
sdk_x86_64-unknown-linux-gnu = fetchVendor {
name = "sdk_x86_64-unknown-linux-gnu";
url = "https://commondatastorage.googleapis.com/chrome-linux-sysroot/toolchain/f5f68713249b52b35db9e08f67184cac392369ab/debian_bullseye_amd64_sysroot.tar.xz";
sha256 = "+pqXDAsKY1BCBGFD3PDqMv1YiU+0/B2LXXryTFIUaWk=";
};
sdk_x86_64-unknown-nixos-gnu = pkgs.symlinkJoin {
name = "sdk_x86_64-unknown-nixos-gnu";
paths = [
llvm.libcxx.out
llvm.libcxx.dev
llvm.libcxxabi.out
llvm.libunwind.out
pkgs.gcc13.cc.libgcc.out
pkgs.gcc13.cc.libgcc.libgcc
pkgs.glibc.dev
pkgs.glibc.libgcc.out
pkgs.glibc.out
];
};
in
{
packages."x86_64-linux".bazel = {
config = pkgs.writeTextFile {
name = "bazel-config";
destination = "/config.bzl";
text = ''
LLVM = "${llvm.bintools-unwrapped}"
CLANG = "${llvm.clang-unwrapped}"
CLANG_LIB = "${llvm.clang-unwrapped.lib}"
CLANG_LIB_VERSION = "16"
NIXOS_DYNAMIC_LINKER = "${pkgs.glibc.out}/lib64/ld-linux-x86-64.so.2"
LIBCLANG_RT_WASM32 = "${libclang_rt_wasm32}"
ANDROID_NDK_VERSION = "25.2.9519653"
SDK_AARCH64_UNKNOWN_LINUX_GNU = "${sdk_aarch64-unknown-linux-gnu}"
SDK_UNIVERSAL_APPLE_DARWIN = "${sdk_universal-apple-darwin}"
SDK_UNIVERSAL_APPLE_IOS = "${sdk_universal-apple-ios}"
SDK_UNIVERSAL_LINUX_ANDROID = "${sdk_universal-linux-android}"
SDK_WASM32_WASI = "${sdk_wasm32-wasi}"
SDK_X86_64_PC_WINDOWS_MSVC = "${sdk_x86_64-pc-windows-msvc}"
SDK_X86_64_UNKNOWN_LINUX_GNU = "${sdk_x86_64-unknown-linux-gnu}"
SDK_X86_64_UNKNOWN_NIXOS_GNU = "${sdk_x86_64-unknown-nixos-gnu}"
'';
};
rust = rust;
};
};
}