|
2 | 2 | , crossPkgs ? import <nixpkgs> {}
|
3 | 3 | , enableLibcxx ? false # Whether to use libc++ toolchain and libraries instead of libstdc++
|
4 | 4 | , minimal ? false # Whether to create minimal shell without extra tools (faster when cross compiling)
|
| 5 | +, capnprotoVersion ? null |
5 | 6 | }:
|
6 | 7 |
|
7 | 8 | let
|
8 | 9 | lib = pkgs.lib;
|
9 | 10 | llvm = crossPkgs.llvmPackages_20;
|
10 |
| - capnproto = crossPkgs.capnproto.override (lib.optionalAttrs enableLibcxx { clangStdenv = llvm.libcxxStdenv; }); |
| 11 | + capnprotoHashes = { |
| 12 | + "0.7.0" = "sha256-Y/7dUOQPDHjniuKNRw3j8dG1NI9f/aRWpf8V0WzV9k8="; |
| 13 | + "0.7.1" = "sha256-3cBpVmpvCXyqPUXDp12vCFCk32ZXWpkdOliNH37UwWE="; |
| 14 | + "0.8.0" = "sha256-rfiqN83begjJ9eYjtr21/tk1GJBjmeVfa3C3dZBJ93w="; |
| 15 | + "0.8.1" = "sha256-OZqNVYdyszro5rIe+w6YN00g6y8U/1b8dKYc214q/2o="; |
| 16 | + "0.9.0" = "sha256-yhbDcWUe6jp5PbIXzn5EoKabXiWN8lnS08hyfxUgEQ0="; |
| 17 | + "0.9.2" = "sha256-BspWOPZcP5nCTvmsDE62Zutox+aY5pw42d6hpH3v4cM="; |
| 18 | + "0.10.0" = "sha256-++F4l54OMTDnJ+FO3kV/Y/VLobKVRk461dopanuU3IQ="; |
| 19 | + "0.10.4" = "sha256-45sxnVyyYIw9i3sbFZ1naBMoUzkpP21WarzR5crg4X8="; |
| 20 | + "1.0.0" = "sha256-NLTFJdeOzqhk4ATvkc17Sh6g/junzqYBBEoXYGH/czo="; |
| 21 | + "1.0.2" = "sha256-LVdkqVBTeh8JZ1McdVNtRcnFVwEJRNjt0JV2l7RkuO8="; |
| 22 | + "1.1.0" = "sha256-gxkko7LFyJNlxpTS+CWOd/p9x/778/kNIXfpDGiKM2A="; |
| 23 | + "1.2.0" = "sha256-aDcn4bLZGq8915/NPPQsN5Jv8FRWd8cAspkG3078psc="; |
| 24 | + }; |
| 25 | + capnprotoBase = if capnprotoVersion == null then crossPkgs.capnproto else crossPkgs.capnproto.overrideAttrs (old: { |
| 26 | + version = capnprotoVersion; |
| 27 | + src = crossPkgs.fetchFromGitHub { |
| 28 | + owner = "capnproto"; |
| 29 | + repo = "capnproto"; |
| 30 | + rev = "v${capnprotoVersion}"; |
| 31 | + hash = lib.attrByPath [capnprotoVersion] "" capnprotoHashes; |
| 32 | + }; |
| 33 | + patches = lib.optionals (lib.versionAtLeast capnprotoVersion "0.9.0" && lib.versionOlder capnprotoVersion "0.10.4") [ ./ci/patches/spaceship.patch ]; |
| 34 | + } // (lib.optionalAttrs (lib.versionOlder capnprotoVersion "0.10") { |
| 35 | + env = { }; # Drop -std=c++20 flag forced by nixpkgs |
| 36 | + })); |
| 37 | + capnproto = capnprotoBase.override (lib.optionalAttrs enableLibcxx { clangStdenv = llvm.libcxxStdenv; }); |
11 | 38 | clang = if enableLibcxx then llvm.libcxxClang else llvm.clang;
|
12 | 39 | clang-tools = llvm.clang-tools.override { inherit enableLibcxx; };
|
13 | 40 | in crossPkgs.mkShell {
|
|
0 commit comments