All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
0.12.0 - 2024-07-12
- Make the C++ -std flag configurable. See #557.
- Add module extension for nodejs toolchain. See #505.
- Add bzlmod version of example to the guide. See #556.
- Make
rules_nixpkgs_java
depend onremote_java_tools
properly. See #497. - Catch case in which find_children is called on an empty dir by @numine777 in #526
- Make
nixpkgs_java_configure
work with Bazel 7. See #499. - Fix
java_test
failure with JDK 17+. See #553. - Fix CPU detection on Darwin with Bazel 7. See #554.
- Fix cc toolchain on Darwin using nixpkgs >= 23.11. See #543.
0.11.0 - 2024-03-27
- support for Go 1.21 and newer. See #417.
- support for
rules_go
0.42.0 and newer. See #422. nixpkgs_flake_package
now works even when the experimental featuresnix-command
andflakes
are disabled. See #465.sigtool
andcodesign
for thecc
toolchain on macOS. See #489.
nixpkgs_flake_package
now only copies the directory containing thenix_flake_file
, including any subdirectories, to the nix store.nixpkgs_flake_package
would previously copy the entire containing Git repository to the nix store ifnix_flake_file
was contained in a Git repository. This is achieved via nix'path:
syntax. This is a breaking change fornix_flake_file
s inside a subdirectory of a Git repository that references a path outside its subdirectory. See #450.
- Build failure when using
-fsanitize=address
with thecc
toolchain. See #437. - The Go toolchain now disables the
GOEXPERIMENT
CoverageRedesign
following the example ofrules_go
and. See #440. - NixOS dynamic loader issue for Java tools like
ijar
andsinglejar
. See #451. nixpkgs_cc_configuren
with Bazel 7 was causing asyntax error at '%': expected expression
" because of a missingtemplate tsubstitution forconly_flags
. See #466.- Build failures with linker errors caused by a missing
-F${SystemConfiguration}/Library/Frameworks
cc
command line option. See #475. - Processes getting killed on macOS during linking caused by using some tools form
darwin.cctools
instead ofstdenv.cc
. See #479.
- Python 2 support has been removed. See #486.
0.10.0 - 2023-10-18
- nixpkgs_nodejs_configure to import a NodeJS toolchain. See #222.
- nixpkgs_nodejs_configure_platforms for platform transparent npm_install. See [#309].
- nixkpgs_python_configure generates an interpreter target. See #255.
- nixpkgs_go_configure gained an attribute_path attribute. See #288.
- nixpkgs_cc_configure gained the ability to configure CXX_FLAGS. See #298.
- nixpkgs_local_repository now accepts a flake.lock file to generate a nixpkgs repository. See #338.
- nixpkgs_python_repository can import Nix provided Python packages, e.g. through poetry. See #343.
- nixpkgs_http_repository can download a nixpkgs repository over HTTP. See #356.
- nixpkgs_flake_package can add a Nix package from a flake. See #380.
- rules_nixpkgs gained the ability to copy generated Nix store paths to a remote store for remote execution support. See #404.
- rules_nixpkgs_core gained bzlmod module extensions nix_repo and nix_pkg to import nixpkgs repositories and packages in MODULE.bazel files directly. See #423.
- nixpkgs_cc_configure now supports cross compilation toolchains. See #241 and #401.
- rules_nixpkgs_dependencies takes a toolchains parameter to specify which rules_nixpkgs components to imoprt. See #257
- nixpkgs_cc_configure now works without an explicit nix_file or nix_file_content attribute. See #334.
- nixpkgs_python_configure now exposes the requirements.json file. See #407.
- A performance issue with nixpkgs_package on MacOS due to slow file copies was resolved. See #256.
- A performance issue with nixpkgs_package due to repeated rule restarts was resolved. See #263.
- Compatibility issues with Bazel 6 for nixpkgs_configure_java were resolved. See #273.
- C++ build errors on MacOS due to -Welaborated-enum-base were fixed. See #382.
- Hard to read error reporting was improved. See #389.
- The http_archive type attribute is now forwarded to rules_nixpkgs component imports. See #411.
- Configuration issues when cross-compiling from Linux to MacOS were fixed. See #413.
- rules_nixpkgs_go: Custom derivations passed to
nixpkgs_go_configure
(vianix-file
,nix-file-content
orattribute_path
) must now contain aversion
attribute. See #385.
0.9.0 - 2022-07-19
- nixpkgs_cc_configure gained a flag to disable automatic registration of the toolchain it creates. See #179
- Support registering a Java toolchain for Bazel 5 See #185
- Rust toolchain and example See #178
- python-container example See #226
- Allow to specify platform constraints in
nixpkgs_cc_configure
See #164 - add
fail_not_supported to
nixpkgs_go_configure` See #167 - add exec/target constraints parameters to python toolchain macro See #169
- Support codesigning on MacOs See #224
-
Split into separate components in preparation for bzlmod See #182
-
Detect whether compiler is Clang at nix eval time See #216
Note: If you have previously passed a custom
cc
toolchain tonixpkgs_cc_configure
you need to provide a booleanisClang
attribute now, e.g.:pkgs.buildEnv { name = "bazel-nixpkgs-cc"; paths = [ cumstom-cc ]; pathsToLink = [ "/bin" ]; passthru = { isClang = custom-cc.isClang; }; }
- Avoid error when include dirs list is empty See #234
- Ensure nixpkgs will work with Bazel build from source See #231
- Fix call to
repository_ctx.file
usingnix_file_content
withnixpkgs_local_repository
See #210 - Fix python example build on macOS See #189
nixpkgs_local_repository
strips executable bit of nix files See #160
0.8.0 - 2021-02-11
- Bazel Skylib is now included as a dependency on
rules_nixpkgs_dependencies
. See #125. nixpkgs_python_configure
now exposes thequiet
attribute for the underlyingnispkgs_package
. See #131.- The default
BUILD
file ofnixpkgs_package
now finds more kinds of C/C++ header files in theinclude
target. See [#137][#137].
- The implementation of
nixpkgs_cc_configure
has been replaced by a more hermetic version that no longer uses Bazel's builtin autodetection toolchain under the hood. The previous behavior is now available under the namenixpkgs_cc_configure_deprecated
, if required. See #128. - The values in the
nixopts
attribute tonixpkgs_package
are now subject to location expansion. Any instance of$(location LABEL)
in thenixopts
attribute will be expanded to the file path of the file referenced byLABEL
. To pass a plain$
to Nix it must be escaped as$$
. See #132.
- The old implementation of
nixpkgs_cc_configure
, now available under the namenixpkgs_cc_configure_deprecated
, has been marked as deprecated in favor ofnixpkgs_cc_configure
and will be replaced by it in future. See #128.
- Incorrect label contruction for Nix file dependencies. See #124.
0.7.0 - 2020-04-20
- Define
rules_nixpkgs_dependencies
in//nixpkgs:repositories.bzl
. - Define
nixpkgs_go_configure
in//nixpkgs:toolchains/go.bzl
nixpkgs_package
now has aquiet
attribute.
- The constraint value for targets to detect whether Nix is available
on the current platform is now called
@//nixpkgs/constraints:support_nix
. The associated constraint setting is@//nixpkgs/constraints:nix
. The old constraint@//nixpkgs/constraints:nixpkgs
constraint setting is still available. But it is highly recommended to migrate to the new constraint setting, and update platform definitions accordingly. This is a breaking change for users ofnixpkgs_python_configure
. - Show Nix output by default, like in releases prior to v0.6.
nixpkgs_local_repository
now correctly invalidates the cache when Nix source files change. See #123.
0.6.0 - 2019-11-14
- Check
nix_file_deps
and fail on undeclared dependencies (breaking change). See #76 and #86. - Define a
nixpkgs
platform constraint. See #97. - Define
nixpkgs_python_configure
. See #97. - Define
nixpkgs_sh_posix_configure
to generaterules_sh
POSIX toolchain. See #95.
- Hide Nix output, following Bazel best practices for a quiet build.
- Disable implicit
nixpkgs
configuration loading (breaking change). See #83.
- Improve distributed caching by not leaking user specific Bazel cache directory, see #67.
0.5.2 - 2019-01-28
nixpkgs_package
now has a new optional argumentfail_not_supported
allowing the rule to not fail on Windows (when set toFalse
)nixpkgs_cc_configure
now has a new optional argumentnixopts
which propagates extra arguments to thenix-build
calls.
- The
nixpkgs_package
is now a no-op on non nixpkgs-supported platforms instead of throwing an error.
0.5.1 - 2018-12-18
nixpkgs_package
now has a new optional argumentnixopts
allowing to pass extra arguments to thenix-build
calls
- The various
nix_*
rules are now only triggered when one of their dependency has changed and not each time theWORKSPACE
is modified - The
nixpkgs_cc_configure
macro is now much faster nixpkgs_cc_configure
is now a no-op on non nixpkgs-supported platforms instead of throwing an error- The
lib
filegroup provided in the defaultBUILD
file fornixpkgs_package
now also works on MacOS
0.4.1 - 2018-11-17
nixpkgs_cc_configure
rule to tell Bazel to configure a toolchain from tools found in the given Nixpkgs repository, instead of from tools found in the ambient environment.nixpkgs_local_repository
rule. Works likenixpkgs_git_repository
but takes a checked-in Nix file or Nix expression as input.
- The
repository
attribute is no longer deprecated. Most rules support bothrepository
andrepositories
as attributes.
- Short repository labels work again. That is, you can say
repository = "@nixpkgs"
as a short form forrepository = "@nixpkgs//:default.nix"
.
0.3.1 - 2018-10-24
repositories
is no longer a required argument tonixpkgs_package
.
0.3 - 2018-10-23
nixpkgks_package
now supports referencing arbitrarily named nix files. A bug previously only made it possible to referencedefault.nix
files.
- The
path
attribute has been removed. SeeMigration
section inREADME.md
for instructions.
nixpkgs_packages
does not accept implicit<nixpkgs>
version. See #25.
sha256
attribute tonixpkgs_git_repository
.- Ability to point to a Nixpkgs fork via the new
remote
attribute tonixpkgs_git_repository
.