nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 fetchFromGitHub,
3 lib,
4 bazel_8,
5 libgcc,
6 cctools,
7 stdenv,
8 jdk_headless,
9 callPackage,
10 zlib,
11}:
12let
13 bazelPackage = callPackage ./build-support/bazelPackage.nix { };
14 registry = fetchFromGitHub {
15 owner = "bazelbuild";
16 repo = "bazel-central-registry";
17 rev = "722299976c97e5191045c8016b7c8532189fc3f6";
18 sha256 = "sha256-hi5BKI94am2LCXD93GBeT0gsODxGeSsd0OrhTwpNAgM=";
19 };
20 src = fetchFromGitHub {
21 owner = "bazelbuild";
22 repo = "examples";
23 rev = "9d6a2e67d29b8b6208d22d70cb22880345bb6803";
24 sha256 = "sha256-NQqXsmX7hyTqLINkz1rnavx15jQTdIKpotw42rGc5mc=";
25 };
26in
27{
28 java = bazelPackage {
29 inherit src registry;
30 sourceRoot = "source/java-tutorial";
31 name = "java-tutorial";
32 targets = [ "//:ProjectRunner" ];
33 bazel = bazel_8;
34 commandArgs = [
35 "--extra_toolchains=@@rules_java++toolchains+local_jdk//:all"
36 "--tool_java_runtime_version=local_jdk_21"
37 ];
38 env = {
39 JAVA_HOME = jdk_headless.home;
40 USE_BAZEL_VERSION = bazel_8.version;
41 };
42 installPhase = ''
43 mkdir $out
44 cp bazel-bin/ProjectRunner.jar $out/
45 '';
46 nativeBuildInputs = lib.optional (stdenv.hostPlatform.isDarwin) cctools;
47 bazelRepoCacheFOD = {
48 outputHash =
49 {
50 aarch64-darwin = "sha256-FwHsg9P65Eu/n8PV7UW90bvBNG+U67zizRy6Krk32Yg=";
51 aarch64-linux = "sha256-W8h2tCIauGnEvPpXje19bZUE/izHaCQ0Wj4nMaP3nkc=";
52 x86_64-darwin = "sha256-XIrGRmYDDRN3Kkt1dFWex1bPRMeIHAR+XWLqB/PpOAM=";
53 x86_64-linux = "sha256-VBckTQAK5qeyi2ublk+Dcga5O5XZg3bfHR6Yaw6vSp0=";
54 }
55 .${stdenv.hostPlatform.system};
56 outputHashAlgo = "sha256";
57 };
58 };
59 cpp = bazelPackage {
60 inherit src registry;
61 sourceRoot = "source/cpp-tutorial/stage3";
62 name = "cpp-tutorial";
63 targets = [ "//main:hello-world" ];
64 bazel = bazel_8;
65 installPhase = ''
66 mkdir $out
67 cp bazel-bin/main/hello-world $out/
68 '';
69 nativeBuildInputs = lib.optional (stdenv.hostPlatform.isDarwin) cctools;
70 commandArgs = lib.optionals (stdenv.hostPlatform.isDarwin) [
71 "--host_cxxopt=-xc++"
72 "--cxxopt=-xc++"
73 ];
74 env = {
75 USE_BAZEL_VERSION = bazel_8.version;
76 };
77 bazelRepoCacheFOD = {
78 outputHash =
79 {
80 aarch64-darwin = "sha256-l6qJU0zGIKl12TYYsG5b+upswUA0hGE+VtQ9QnKpBh8=";
81 aarch64-linux = "sha256-l6qJU0zGIKl12TYYsG5b+upswUA0hGE+VtQ9QnKpBh8=";
82 x86_64-darwin = "sha256-l6qJU0zGIKl12TYYsG5b+upswUA0hGE+VtQ9QnKpBh8=";
83 x86_64-linux = "sha256-l6qJU0zGIKl12TYYsG5b+upswUA0hGE+VtQ9QnKpBh8=";
84 }
85 .${stdenv.hostPlatform.system};
86 outputHashAlgo = "sha256";
87 };
88 };
89 rust = bazelPackage {
90 inherit src registry;
91 sourceRoot = "source/rust-examples/01-hello-world";
92 name = "rust-examples-01-hello-world";
93 targets = [ "//:bin" ];
94 bazel = bazel_8;
95 env = {
96 USE_BAZEL_VERSION = bazel_8.version;
97 };
98 installPhase = ''
99 mkdir $out
100 cp bazel-bin/bin $out/hello-world
101 '';
102 buildInputs = [
103 zlib
104 libgcc
105 ];
106 nativeBuildInputs = lib.optional (stdenv.hostPlatform.isDarwin) cctools;
107 autoPatchelfIgnoreMissingDeps = [ "librustc_driver-*.so" ];
108 bazelVendorDepsFOD = {
109 outputHash =
110 {
111 aarch64-darwin = "sha256-0QtaPtcBljyhiJGwA8ctSpi+UQp/9q/ZoHUHORizmlY=";
112 aarch64-linux = "sha256-zpiwQ8OB8KhY+kxSXlSOd/zmoH1VGYDGgojf4Or04pQ=";
113 x86_64-darwin = "sha256-+tCDSuYkon1DEARwWTYABJbmysSNAK9vy0tCm8YsGjQ=";
114 x86_64-linux = "sha256-wCWSRc20Yr/hdXn8szbhLAX7Oy3G5keyHTTdO0msnks=";
115 }
116 .${stdenv.hostPlatform.system};
117 outputHashAlgo = "sha256";
118 };
119 };
120}