Is your feature request related to a problem? Please describe.
We need to enable the boringcrypto experiment in Go in order to get support for FIPS. Without Bazel this would be a matter of setting GOEXPERIMENT in your environment when running go build. With rules_go directly, there is support for GOEXPERIMENT, which rules_nixpkgs uses by setting nocoverageredesign for some versions, but there seems to be no way to add additional experiments.
Describe the solution you'd like
We'd like a way to pass additional experiments through to rules_go from rules_nixpkgs.
Describe alternatives you've considered
Right now I've decided to patch rules_nixpkgs_go and set boringcrypto explicitly:
diff --git a/go.bzl b/go.bzl
index a40c2ac..8c6b520 100644
--- a/go.bzl
+++ b/go.bzl
@@ -84,6 +84,7 @@ def go_sdk_for_arch(go_version):
experiments = []
if go_version.split('.')[0] == '1' and int(go_version.split('.')[1]) >= 20:
experiments = ["nocoverageredesign"]
+ experiments.append("boringcrypto")
go_sdk(
name = "go_sdk",
I tried other solutions using go_wrap_sdk / go_register_toolchains but unfortunately I wasn't able to get anything working using that approach.
One solution could just be to pass experiments = ["boringcrypto"] into nixpkgs_go_configure which then can be passed through to go_sdk_for_arch instead of defaulting to [].
Additional context
None.
Is your feature request related to a problem? Please describe.
We need to enable the
boringcryptoexperiment in Go in order to get support for FIPS. Without Bazel this would be a matter of settingGOEXPERIMENTin your environment when runninggo build. Withrules_godirectly, there is support forGOEXPERIMENT, whichrules_nixpkgsuses by settingnocoverageredesignfor some versions, but there seems to be no way to add additional experiments.Describe the solution you'd like
We'd like a way to pass additional experiments through to
rules_gofromrules_nixpkgs.Describe alternatives you've considered
Right now I've decided to patch
rules_nixpkgs_goand setboringcryptoexplicitly:I tried other solutions using
go_wrap_sdk/go_register_toolchainsbut unfortunately I wasn't able to get anything working using that approach.One solution could just be to pass
experiments = ["boringcrypto"]intonixpkgs_go_configurewhich then can be passed through togo_sdk_for_archinstead of defaulting to[].Additional context
None.