hexa
December 10, 2023, 10:34pm
42
With its 2023.12.0 release the home-assistant
package started to more widely depend on its matter integration in through various other components.
Unfortunately, the matter integration is currently only available as binary wheel, and since it is built in an Ubuntu 20.04 container it depends on the OpenSSL version available in that distro release, which is 1.1. We provide openssl_1_1
through autopatchElfHook
here.
While nixpkgs still has openssl_1_1
available, we decided a long time ago to set meta.knownVulnerabilities
due to its end of life in early September 2023.
The result is that home-assistant
will now transitively be flagged insecure for relying on openssl_1_1
. To continue using it, a snippet like the following is most likely required:
{
nixpkgs.config.permittedInsecurePackages = [
"openssl-1.1.1w"
];
}
To my knowledge, we still cache packages depending on openssl_1_1
, so there will be no further impact for the time being, but time is surely running out.
In the meantime I’m trying to communicate this problem upstream.
15 Likes
hexa
February 27, 2024, 4:12pm
43
With the upgrade of the Linux default version to 6.6 we’ve seen the nixosTests.nfs3.simple
regressing.
https://hydra.nixos.org/build/251337679
https://hydra.nixos.org/build/251337696
It broke somewhere between v6.3.12..v6.4.0
and our kernel maintainers are trying to bisect it further, but it is a costly process, and it is not guaranteed, that it will yield results.
To unbreak the channel we therefore decided to remove nfs3
from the tested set, and replace it with the newer nfs4
.
NFS4, depending how you count is between 9 years (RFC7530 ) and 21 years (https://www.usenix.org/system/files/login/articles/mcdonald_0.pdf ) old, and should by now be the primary NFS version in use.
The impact of this change should therefore hopefully be minimal.
11 Likes
hexa
February 28, 2024, 7:36pm
44
With the next nixos-unstable
evaluation home-assistant
will not require allowing openssl-1.1.1w
in permittedInsecurePackages
any longer. The matter integration that was previously using it was migrated to boringssl (thanks to Matt Leon ), which will also benefit Home Assistant upstream, which is awesome!
Please make sure to remove the previously mentioned config snippet, so you’ll become aware again, when you use packages relying on openssl_1_1
.
5 Likes
Janik
March 2, 2024, 11:38pm
45
nixosTests.networking: refactor and add NetworkManager support by Janik-Haag · Pull Request #292472 · NixOS/nixpkgs · GitHub will break networking.networkmanager.extraConfig
the fix should be quite easy and you basically just have to convert your ini string to the equivalent attrset. For example:
~ networking.networkmanager = {
- extraConfig = ''
- [main]
- no-auto-default=*
- ''
+ extraConfig.main.no-auto-default = "*";
~ };
4 Likes
SergeK
April 15, 2024, 7:58am
46
cudaPackages.cudatoolkit
has been renamed into cudaPackages.cudatoolkit-legacy-runfile
: cudaPackages.cudatoolkit: rename, replace with a symlinkJoin · Issue #295655 · NixOS/nixpkgs · GitHub
A symlinkJoin
wrapper is left at the old path for compatibility which includes most of the toolchain and common libraries, but not e.g. nsight-systems
. Use the split packages instead: NixOS Search .
1 Like
Heads up on CDI: Add `mount-nvidia-binaries` and `mount-nvidia-docker-1-directories` options by ereslibre · Pull Request #290979 · NixOS/nixpkgs · GitHub . This PR removes two recently introduced (in unstable too) NixOS options:
virtualisation.containers.cdi.static.enable
, and
virtualisation.containers.cdi.dynamic.enable
At this time, the dynamic configuration is only implemented for Nvidia (it contains a CDI generator.) It has replaced the virtualisation.containers.cdi.dynamic.enable
option with hardware.nvidia-container-toolkit.enable
.
It has further features that are not implemented in current unstable, like the ability to add user defined mounts to containers, or the ability to choose whether the user wants to mount nvidia-docker-1 directories or the Nvidia executables inside containers.
There is still work in progress that will continue after the 24.05 cut, recorded at [Tracking issue] CDI Support · Issue #290609 · NixOS/nixpkgs · GitHub by @SergeK .
1 Like
Atemu
April 24, 2024, 8:09pm
48
appimageTools.wrapAppImage: remove version from `pname` by pbsds · Pull Request #271071 · NixOS/nixpkgs · GitHub implements proper pname
+version
support for appimageTools.wrapAppImage
. If you previously relied on AppImages being linked to $out/bin/${pname}-${version}
and/or had a workaround in place to link it to just pname
, this change will be breaking.
An attempt was made to cover all appimageTools.wrapAppImage
usages in Nixpkgs but at over 100 packages, it’s likely some were missed or done improperly. If an AppImage breaks the coming week, this may be the culprit, so please point people to the PR.
6 Likes
We decided to revert the change to dbus-broker
by default due to reported issues.
However due to switch-to-configuration
not handling aliases and the rule that “Dbus may not be restarted or stopped under any circumstances” it might happen that when you switch to configuration that dbus-broker.service
gets stopped. Which breaks many things. Unfortunately this also breaks the reboot
command and this means you might need a hard-reset to get your machine working again. The safest option is to do a nixos-rebuild boot
and boot into the new configuration.
NixOS:master
← flokli:revert-dbus-broker-default
opened 11:03AM - 29 Apr 24 UTC
This reverts commit e827697fd3435b458a759ef0b92de7f26624b910.
Supersedes #305… 273, which is drafted and with merge conflicts.
## Description of changes
<!--
For package updates please link to a changelog or describe changes, this helps your fellow maintainers discover breaking updates.
For new packages please briefly describe the package or provide a link to its homepage.
-->
## Things done
- Built on platform(s)
- [ ] x86_64-linux
- [ ] aarch64-linux
- [ ] x86_64-darwin
- [ ] aarch64-darwin
- For non-Linux: Is sandboxing enabled in `nix.conf`? (See [Nix manual](https://nixos.org/manual/nix/stable/command-ref/conf-file.html))
- [ ] `sandbox = relaxed`
- [ ] `sandbox = true`
- [ ] Tested, as applicable:
- [NixOS test(s)](https://nixos.org/manual/nixos/unstable/index.html#sec-nixos-tests) (look inside [nixos/tests](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests))
- and/or [package tests](https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md#package-tests)
- or, for functions and "core" functionality, tests in [lib/tests](https://github.com/NixOS/nixpkgs/blob/master/lib/tests) or [pkgs/test](https://github.com/NixOS/nixpkgs/blob/master/pkgs/test)
- made sure NixOS tests are [linked](https://nixos.org/manual/nixpkgs/unstable/#ssec-nixos-tests-linking) to the relevant packages
- [ ] Tested compilation of all packages that depend on this change using `nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD"`. Note: all changes have to be committed, also see [nixpkgs-review usage](https://github.com/Mic92/nixpkgs-review#usage)
- [ ] Tested basic functionality of all binary files (usually in `./result/bin/`)
- [24.05 Release Notes](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2405.section.md) (or backporting [23.05](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2305.section.md) and [23.11](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2311.section.md) Release notes)
- [ ] (Package updates) Added a release notes entry if the change is major or breaking
- [ ] (Module updates) Added a release notes entry if the change is significant
- [ ] (Module addition) Added a release notes entry if adding a new NixOS module
- [ ] Fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md).
<!--
To help with the large amounts of pull requests, we would appreciate your
reviews of other pull requests, especially simple package updates. Just leave a
comment describing what you have tested in the relevant package/service.
Reviewing helps to reduce the average time-to-merge for everyone.
Thanks a lot if you do!
List of open PRs: https://github.com/NixOS/nixpkgs/pulls
Reviewing guidelines: https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md#reviewing-contributions
-->
---
Add a :+1: [reaction] to [pull requests you find important].
[reaction]: https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/
[pull requests you find important]: https://github.com/NixOS/nixpkgs/pulls?q=is%3Aopen+sort%3Areactions-%2B1-desc
We’ve been trying to make it safer to switch between dbus implementations by delaying the restart til next boot. However this won’t help you not hit this bug that the revert caused
NixOS:master
← SuperSandro2000:dbus-broker
This did not fix the issue for me. At least not when going from a nixpkgs-unstab… le checkout with `dbus-broker` still enabled by default to a nixpkgs-unstable checkout with `dbus` enabled by default + this fix. `dbus-broker.service` still got stopped.
this is because the `dbus-broker.service` alias doesn't exist in the original configuration.
I think we can't fix this properly without telling people to `nixos-rebuild boot`.
For the record i did a `nixos-rebuild switch` from `2fd19c8` (which was still on `dbus-broker` to `ee4a6e0` (which includes this PR)
I’m still trying to come up with a fix that doesn’t cause nixos-rebuild switch
to break but I am not sure how we can fix this properly.
If people have ideas I’m happy to hear them.
I hope at least with this post I’m saving people from some nasty surprises
Edit:
You can do sudo reboot -ff
to bypas logind and dbus
9 Likes
Starting with the next nixos-unstable
evaluation, chromium
will no longer be able to automatically download and load its proprietary Widevine DRM component when it encounters DRM protected content.
Those that want to continue playing DRM protected content in chromium
need to explicitly opt into our Widevine (-wv
) wrapper using
environment.systemPackages = with pkgs; [
(chromium.override { enableWideVine = true; })
];
now.
enableWideVine
has been part of our chromium
drv for almost 10 years.
Meaning there is a high chance those that need Widevine may already have that override in their config.
NixOS:master
← emilylange:chromium-disable-drm-auto-download
opened 09:33PM - 08 May 24 UTC
## Description of changes
Previously, chromium automatically downloaded Widev… ine via its component updater when encountering DRM protected content for the first time or when manually opening chrome://components.
This commit disables that and also prevents previously downloaded Widevine blobs (usually in ~/.config/chromium/WidevineCdm/) from being loaded and executed.
Widevine now only works using
~~~
chromium.override { enableWideVine = true; }
~~~
making Widevine truly opt-in, as it's supposed to be. Using that override also sets meta.license to unfree, making the end user aware that Widevine is in fact unfree.
See #115275 for further details.
Closes #115275.
## Things done
- Built on platform(s)
- [x] x86_64-linux
- [ ] aarch64-linux
- [ ] x86_64-darwin
- [ ] aarch64-darwin
- For non-Linux: Is sandboxing enabled in `nix.conf`? (See [Nix manual](https://nixos.org/manual/nix/stable/command-ref/conf-file.html))
- [ ] `sandbox = relaxed`
- [ ] `sandbox = true`
- [ ] Tested, as applicable:
- [NixOS test(s)](https://nixos.org/manual/nixos/unstable/index.html#sec-nixos-tests) (look inside [nixos/tests](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests))
- and/or [package tests](https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md#package-tests)
- or, for functions and "core" functionality, tests in [lib/tests](https://github.com/NixOS/nixpkgs/blob/master/lib/tests) or [pkgs/test](https://github.com/NixOS/nixpkgs/blob/master/pkgs/test)
- made sure NixOS tests are [linked](https://nixos.org/manual/nixpkgs/unstable/#ssec-nixos-tests-linking) to the relevant packages
- [ ] Tested compilation of all packages that depend on this change using `nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD"`. Note: all changes have to be committed, also see [nixpkgs-review usage](https://github.com/Mic92/nixpkgs-review#usage)
- [x] Tested basic functionality of all binary files (usually in `./result/bin/`) **both non-Widevine and Widevine variants**
- [24.05 Release Notes](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2405.section.md) (or backporting [23.05](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2305.section.md) and [23.11](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2311.section.md) Release notes)
- [ ] (Package updates) Added a release notes entry if the change is major or breaking
- [ ] (Module updates) Added a release notes entry if the change is significant
- [ ] (Module addition) Added a release notes entry if adding a new NixOS module
- [x] Fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md).
opened 05:15PM - 06 Mar 21 UTC
closed 04:01PM - 10 May 24 UTC
0.kind: bug
**Describe the bug**
Nix installs a version of Chromium with Widevine on NixOS,… despite not being enabled and goes through unfree license checks.
**To Reproduce**
Steps to reproduce the behavior:
1. Add `pkgs.chromium` to `environment.systemPackages`
2. Rebuild system configuration
3. Check `chrome://components` in Chromium
**Expected behavior**
- Widevine is not installed if not explicitly enabled.
or
- Chromium trips nonfree license checks and forces user to allow unfree packages.
**Screenshots**


**Notify maintainers**
@primeos
@thefloweringash
@bendlas
**Metadata**
- system: `"x86_64-linux"`
- host os: `Linux 5.10.18, NixOS, 20.09.3368.16fc9eb7364 (Nightingale)`
- multi-user?: `yes`
- sandbox: `yes`
- version: `nix-env (Nix) 2.3.10`
- channels(patrycja): `""`
- channels(root): `"nixos-20.09.3368.16fc9eb7364, unstable-21.05pre272691.04ac9dcd311"`
- nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`
Maintainer information:
```yaml
# a list of nixpkgs attributes affected by the problem
attribute:
# a list of nixos modules affected by the problem
module:
```
5 Likes
vcunat
May 11, 2024, 4:45am
51
Let me remind this thread that “breaking changes” are generally not allowed currently. For details see NixOS 24.05 — Release Schedule · Issue #303285 · NixOS/nixpkgs · GitHub
3 Likes
futile
June 17, 2024, 1:48pm
52
Not my change, but I noticed that nodePackages.pyright
has simply become pyright
now (and nodePackages.pyright
fails to build now).
1 Like
hexa
June 24, 2024, 11:14am
53
The latest python-updates cycle migrated the primary Python version to 3.12. This release has been particularly breaking with the removal of commonly used modules of the past like distutils
or imp
.
If your package is affected by this, make sure to bug your upstream about it, maybe they already noticed and you can fetch a patch.
In the meantime you can resolve breakages by pinning packages ot python311
for the 24.11 release cycle.
NixOS:master
← NixOS:staging-next
opened 10:31AM - 24 Jun 24 UTC
##### Helpful links
- workflow docs: https://github.com/NixOS/nixpkgs/blob/ma… ster/CONTRIBUTING.md#staging
- important jobs:
https://hydra.nixos.org/job/nixpkgs/staging-next/unstable#tabs-constituents
https://hydra.nixos.org/job/nixos/staging-next-small/tested
- jobsets:
https://hydra.nixos.org/jobset/nixpkgs/staging-next
https://hydra.nixos.org/jobset/nixos/staging-next-small
- nix-review reports: https://malob.github.io/nix-review-tools-reports/
- previous staging-next: https://github.com/NixOS/nixpkgs/pull/316075
##### Mass breakages
_nothing notable so far_
9 Likes
SergeK
June 30, 2024, 10:38pm
54
I think we might merge cudaPackages: make getOutput work again by SomeoneSerge · Pull Request #323056 · NixOS/nixpkgs · GitHub this week. This removes an old and abominable hack related to our symlink abuse, but temporarily this also adds another ugly feature: for most packages p
in cudaPackages
, p.out
is now going to be nearly empty. This will, for instance, break expressions such as ${cuda_nvcc}/bin/nvcc
.
Migration strategy:
First and foremost, try not to mention outputs at all, but rely on mkDerivation
selecting the dev
outputs, and the dev
outputs propagating everything else.
For instance, do not start with a symlinkJoin
, but try enumerating cuda dependencies in buildInputs
(except cuda_nvcc
, which goes in nativeBuildInputs
). By not using symlinkJoin
you’ll let Nix discard references to most of the inputs after the build. The output closure will be much smaller than the input closure.
Do not write things like bulidInputs = [ cuda_cudart.dev cuda_cudart.lib cuda_cudart.static ]
. Simply write buildInputs = [ cuda_cudart ]
; the other outputs are propagated automatically.
Do not expect that any particular output names are present in cudaPackages, instead rely on getDev
(e.g. -I${lib.getDev cuda_cudart}/include
will keep working), getLib
(e.g. -L${getLib libcublas}/lib
), getOutput "static"
, getOutput "stubs"
, getBin
and getExe
(e.g. ${getBin cuda_nvcc}/bin/nvcc
, getExe cuda_nvcc
, getExe' cuda_nvcc "nvcc"
).
5 Likes
futile
July 13, 2024, 11:30am
55
9 Likes
The lib
and out
outputs of lldb have been combined on Darwin. Packages should use lib.getLib
to access the lib
output of lldb.
(This change may be reverted if an alternate workaround for the issue can be found.)
NixOS:master
← reckenrode:lldb-fix-mk2
opened 11:54AM - 08 Jul 24 UTC
LLDB expects to find the location of `bin` relative to `lib`. Patching it to kno… w the location would cause a cycle between the `out` output and the `lib` output, so combine the two on Darwin.
Fixes https://github.com/NixOS/nixpkgs/issues/252838.
This is a resubmission of https://github.com/NixOS/nixpkgs/pull/309165.
## Description of changes
<!--
For package updates please link to a changelog or describe changes, this helps your fellow maintainers discover breaking updates.
For new packages please briefly describe the package or provide a link to its homepage.
-->
## Things done
- Built on platform(s)
- [ ] x86_64-linux
- [ ] aarch64-linux
- [ ] x86_64-darwin
- [ ] aarch64-darwin
- For non-Linux: Is sandboxing enabled in `nix.conf`? (See [Nix manual](https://nixos.org/manual/nix/stable/command-ref/conf-file.html))
- [ ] `sandbox = relaxed`
- [ ] `sandbox = true`
- [ ] Tested, as applicable:
- [NixOS test(s)](https://nixos.org/manual/nixos/unstable/index.html#sec-nixos-tests) (look inside [nixos/tests](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests))
- and/or [package tests](https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md#package-tests)
- or, for functions and "core" functionality, tests in [lib/tests](https://github.com/NixOS/nixpkgs/blob/master/lib/tests) or [pkgs/test](https://github.com/NixOS/nixpkgs/blob/master/pkgs/test)
- made sure NixOS tests are [linked](https://nixos.org/manual/nixpkgs/unstable/#ssec-nixos-tests-linking) to the relevant packages
- [ ] Tested compilation of all packages that depend on this change using `nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD"`. Note: all changes have to be committed, also see [nixpkgs-review usage](https://github.com/Mic92/nixpkgs-review#usage)
- [ ] Tested basic functionality of all binary files (usually in `./result/bin/`)
- [24.11 Release Notes](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2411.section.md) (or backporting [23.11](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2311.section.md) and [24.05](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2405.section.md) Release notes)
- [ ] (Package updates) Added a release notes entry if the change is major or breaking
- [ ] (Module updates) Added a release notes entry if the change is significant
- [ ] (Module addition) Added a release notes entry if adding a new NixOS module
- [x] Fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md).
<!--
To help with the large amounts of pull requests, we would appreciate your
reviews of other pull requests, especially simple package updates. Just leave a
comment describing what you have tested in the relevant package/service.
Reviewing helps to reduce the average time-to-merge for everyone.
Thanks a lot if you do!
List of open PRs: https://github.com/NixOS/nixpkgs/pulls
Reviewing guidelines: https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md#reviewing-contributions
-->
---
Add a :+1: [reaction] to [pull requests you find important].
[reaction]: https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/
[pull requests you find important]: https://github.com/NixOS/nixpkgs/pulls?q=is%3Aopen+sort%3Areactions-%2B1-desc
2 Likes
cctools and ld64 have been upgraded on Darwin. These changes are part of the current staging-next cycle and should land in master assuming no issues are found.
nixpkgs breaking changes:
ld64 has been split out of cctools into its own package. If you need ld64 specifically, you should depend on the ld64 package;
cctools and ld64 have been moved to the by-name
hierarchy. The old darwin.cctools names have been added to darwin-aliases.nix
and can’t be used in nixpkgs;
GNU as is now in a separate output (cctools^gas);
postLinkSignHook has been removed. ld64 now handles code-signing itself. Binaries that are signed by ld64 with an ad hoc signature will have a “linker-signed” flag set; and
strip
and install_name_tool
understand the “linker-signed” flag, so they are no longer wrapped because the automatically update ad hoc signatures. Other signatures (e.g., manual codesign
, certificates) will have to be regenerated manually after the binary is modified.
Upstream breaking changes:
ld64 no longer accepts nested archives. If a package tries to include an archive inside another archive, linking will fail. This can be fixed by linking the static libraries separately instead of embedding one inside the other;
ld64 is stricter about which command-line arguments it accepts. For example, passing -rpath
when merging a Mach-O object file now results in an error. The fix is not to do that;
ld64 has limitations on size when using special response files (e.g., passing them via process substitution in Bash). These are worked around in ld-wrapper by using a temporary file; and
The implementation is now based on Apple’s upstream instead of cctools-port. libtapi should build and work on Linux, but more work is required to finish porting cctools and ld64.
NixOS:staging
← reckenrode:ld64
opened 02:09AM - 30 Apr 24 UTC
## Description of changes
This PR updates cctools and ld64. It also fixes rel… ated breakage. It is currently set to draft until 24.05 is released. I will be rebasing weekly against staging, resolving any merge conflicts then. Before updating the ld64 branch, I build my configs and the Darwin channel blockers to confirm no regressions.
The following notes are copied from https://discourse.nixos.org/t/darwin-updates-news/42249/10.
### Packaging Changes
* cctools, ld64, and libtapi are now built from Apple’s [OSS distributions](https://github.com/apple-oss-distributions) repo instead of the [cctools-port](https://github.com/tpoechtrager/cctools-port) and [apple-libtapi](https://github.com/tpoechtrager/apple-libtapi) repos.
* These versions (cctools 1010.6, ld64 951.9, libtapi 1500.0.12.3) correspond to the versions shipped with Xcode 15. cctools and ld64 are current as of Xcode 15.3. Packages should no longer have to patch around missing flags or feature support.
* Restoring Linux support is a WIP. I have made some changes to use non-private and non-portable APIs, but I am currently focused on getting Darwin updates first.
* The packages have been moved to the by-name hierarchy. Aliases are provided to the old names, but there are some breaking changes (see below).
* cctools is now only cctools. This is technically a breaking change (see below). ld64 has been moved to its own, separate package.
* darwin.binutils is now the package that defines the mix of cctools and LLVM tools. It has been update with additional tools. See below for the breakdown of what it contains.
* The build system has been replaced with Meson. I did this because dealing with xcbuild stinks, and these packages eventually need to support Linux for cross-compilation.
* corecrypto and CommonCrypto hashing APIs are reimplemented using OpenSSL on both Darwin (and eventually) Linux. cctools-port only does this on non-Darwin platforms.
* libtapi has been split into separate out and lib outputs. Most packages only need libtapi.dylib, which is ~500 KiB compared to ~30 MiB for the tapi binary.
* libtapi is linked against zlib. I don’t know what it uses zlib to do, but the upstream libtapi is also linked against zlib, and I want to match what upstream is doing.
_Note:_ ld-prime is will not be packaged because it is not currently included in the source releases. While I think it’s unlikely, ld-prime will be added separately as a new package should the source be released.
### New Features
* LTO support. With this update, LTO works. I had to patch ld64 to look for libLTO.dylib in the store and clang to pass the correct path (see https://github.com/NixOS/nixpkgs/pull/304350). I bootstrap ld64 and link it with itself with LTO enabled to make sure that LTO actually works.
* Code directory support. cctools is built with libcodedirectory support, which allows strip and install_name_tool to identify linker-created signatures and update them automatically. This removes the need for postLinkSignHook and actually makes it harmful to continue using it by default (because it prevents automatic signature updates by replacing them with a non-linker-created signature).
###
Breaking Changes
* ld64 and cctools use GCD (libdispatch) for parallelism. This should improve performance, but it technically ups the required macOS version to 10.14. The APIs it uses are present under different names in 10.12, so I have attempted to patch around them. It builds with the 10.12 SDK, but it will need testing to confirm the tools actually work. This was the driver of updating the default SDK on x86_64-darwin for 24.11.
* Apple removed support for nested static archives from ld64. This happened with the release of Xcode 14, so it has been out in the ecosystem for a few years. Hopefully packages have adapted by now. For example, Kyua adds libutils.a to libcli.a using libcli_a_LIBADD in automake. This will fail to link with ld64 951.9.
* ld64 is more picking about command-line arguments. Passing `-rpath` when merging Mach-O object files fails.
* GNU as has been moved to the cctools^gas output. `-q` and `-Q` flags are supported to control whether it calls GNU as or the clang assembler (matching the upstream behavior of `as`).
* cctools only provides binaries from cctools. ld64 is a separate package now.
* darwin.cctools-apple, darwin.cctools-port, and darwin.cctools-llvm are replaced by just cctools. cctools-llvm is an alias to darwin.bintools.
* The old names can’t be used in nixpkgs because aliases are disabled when ofborg eval is run. The PR updating the tools will include changes for all packages using the old names. (Updates for LTO will be done in a separate PR or PRs.)
* Use of postLinkSignHook has been removed from bintools-wrapper. Because it removes linker-created signatures, it breaks the automatic updating of signatures by strip and install_name_tool. Unless you’re manually invoking codesign, you shouldn’t be affected. install_name_tool will do the right thing by default.
* `strip` and `install_name_tool` are no longer wrapped with `sigtool`. If you are modifying linker-signed binaries, which should be the typical case, they will update the signatures automatically. If you are manually invoking `codesign`, you will need to update the signatures manually after running `strip` or `install_name_tool`.
### stdenv updates
* Stage 2 has been collapsed from two parts into one stage. The source-based CF is not coming back. It adds a lot of complexity to the bootstrap.
* As noted in breaking changes, the Darwin stdenv no longer provides bintools using postLinkSignHook. Once the bootstrap tools are updated with these releases, it may be possible to drop sigtool completely from the bootstrap. Until that happens, early stages manually implement postLinkSignHook because the bootstrap tools ld64 does not appear capable of signing binaries on its own.
* As part of this update, I have to update the stdenv to use the new paths.
* The overall stdenv size is down by ~20 MiB due to dropping tapi from the closure. It also drops signtool and signingUtils, but those binaries are small.
* curl and GNU binutils throw when used during the bootstrap. curl should never be used during the bootstrap (to allow it to be updated without triggering a whole rebuild of Darwin). GNU binutils generally shouldn’t be used on Darwin (e.g., https://github.com/NixOS/nixpkgs/issues/299606), so the bootstrap shouldn’t need to use it.
### darwin.bintools changes
darwin.bintools changes
* c++filter is no longer linked from GNU binutils. It is linked from LLVM. A handful of packages are linked from cctools because LLVM does not provided drop-in replacements for them. The lists of tools are exported as attributes on darwin.bintools (`llvm_cmds` and `cctools_cmds` respectively). All binaries are symlinked to their traditional names (e.g., llvm-strip is symlinked to strip).
* LLVM tools: addr2line, ar, c++filt, dwarfdump, dsymutil, lipo, install-name-tool, nm, objcopy, objdump, otool, size, strings, strip
* cctools tools: codesign_allocate, gprof, ranlib (and ld from ld64)
* Darwin is still `isCCTools` and not `isLLVM` because it does not use lld by default. Maybe that could change with lld 18, but I’m doubtful.
### Resolved Issues
* LTO works. Closes https://github.com/NixOS/nixpkgs/issues/19098.
* ld64 no longer crashes linking Haskell applications. Closes https://github.com/NixOS/nixpkgs/issues/149692.
## Things done
- Built on platform(s)
- [ ] x86_64-linux
- [ ] aarch64-linux
- [x] x86_64-darwin
- [x] aarch64-darwin
- For non-Linux: Is sandboxing enabled in `nix.conf`? (See [Nix manual](https://nixos.org/manual/nix/stable/command-ref/conf-file.html))
- [ ] `sandbox = relaxed`
- [ ] `sandbox = true`
- [ ] Tested, as applicable:
- [NixOS test(s)](https://nixos.org/manual/nixos/unstable/index.html#sec-nixos-tests) (look inside [nixos/tests](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests))
- and/or [package tests](https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md#package-tests)
- or, for functions and "core" functionality, tests in [lib/tests](https://github.com/NixOS/nixpkgs/blob/master/lib/tests) or [pkgs/test](https://github.com/NixOS/nixpkgs/blob/master/pkgs/test)
- made sure NixOS tests are [linked](https://nixos.org/manual/nixpkgs/unstable/#ssec-nixos-tests-linking) to the relevant packages
- [ ] Tested compilation of all packages that depend on this change using `nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD"`. Note: all changes have to be committed, also see [nixpkgs-review usage](https://github.com/Mic92/nixpkgs-review#usage)
- [x] Tested basic functionality of all binary files (usually in `./result/bin/`)
- [24.05 Release Notes](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2405.section.md) (or backporting [23.05](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2305.section.md) and [23.11](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2311.section.md) Release notes)
- [ ] (Package updates) Added a release notes entry if the change is major or breaking
- [ ] (Module updates) Added a release notes entry if the change is significant
- [ ] (Module addition) Added a release notes entry if adding a new NixOS module
- [x] Fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md).
<!--
To help with the large amounts of pull requests, we would appreciate your
reviews of other pull requests, especially simple package updates. Just leave a
comment describing what you have tested in the relevant package/service.
Reviewing helps to reduce the average time-to-merge for everyone.
Thanks a lot if you do!
List of open PRs: https://github.com/NixOS/nixpkgs/pulls
Reviewing guidelines: https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md#reviewing-contributions
-->
---
Add a :+1: [reaction] to [pull requests you find important].
[reaction]: https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/
[pull requests you find important]: https://github.com/NixOS/nixpkgs/pulls?q=is%3Aopen+sort%3Areactions-%2B1-desc
5 Likes
Atemu
September 7, 2024, 11:40pm
58
As of ffmpeg: ffmpeg_6 -> ffmpeg_7 by emilazy · Pull Request #337855 · NixOS/nixpkgs · GitHub , ffmpeg’s major version will be moved from 6 to 7. This change will be included in the next staging-next cycle.
If you encounter build failures related to libav* or notice issues relating to media codecs in your applications, please create issues and ping @Atemu @emily and @jopejoe1 .
4 Likes
rnhmjoj
September 12, 2024, 11:31am
59
The method to safely handle secrets in the networking.wireless
module has been changed (PR #180872 ) to benefit from a new feature of wpa_supplicant. The syntax to refer to secrets has changed slightly and the option environmentFile
has been replaced by secretsFile
.
Only if you have been using networking.wireless.environmentFile
a small migration is necessary: the instructions will show up in the nixos-rebuild
output.
If you have any problems create an issue and ping @rnhmjoj .
2 Likes
rnhmjoj
September 16, 2024, 10:57am
60
The dnscrypt-wrapper
package was removed since the project has been effectively unmaintained since 2018; moreover the NixOS module had to rely on an abandoned version of dnscrypt-proxy v1 for the rotation of keys.
If you want to wrap a resolver with DNSCrypt you can instead use dnsdist
, which has supported this for a while. See options services.dnsdist.dnscrypt.*
For more information see PR # 341838 .
5 Likes
hexa
September 23, 2024, 8:39am
61
The logrotate
systemd unit has received some thorough hardening, that in theory shouldn’t bite you. I know few people are probably using the module directly, but rather through other modules that set it up. But unless they’re doing anything weird, like access the network, which now requires allowNetworking
to be set, they’ll probably be fine.
NixOS:master
← mweinelt:logrotate-hardening
opened 04:35PM - 02 Sep 24 UTC
Logrotate is a service that runs as root and moves logfiles around while keeping… ownership of these files intact. This means we can and should severely limit the scope of what can be done during its runtime.
## Description of changes
<!--
For package updates please link to a changelog or describe changes, this helps your fellow maintainers discover breaking updates.
For new packages please briefly describe the package or provide a link to its homepage.
-->
## Things done
- Built on platform(s)
- [ ] x86_64-linux
- [ ] aarch64-linux
- [ ] x86_64-darwin
- [ ] aarch64-darwin
- For non-Linux: Is sandboxing enabled in `nix.conf`? (See [Nix manual](https://nixos.org/manual/nix/stable/command-ref/conf-file.html))
- [ ] `sandbox = relaxed`
- [ ] `sandbox = true`
- [x] Tested, as applicable:
- [NixOS test(s)](https://nixos.org/manual/nixos/unstable/index.html#sec-nixos-tests) (look inside [nixos/tests](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests))
- and/or [package tests](https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md#package-tests)
- or, for functions and "core" functionality, tests in [lib/tests](https://github.com/NixOS/nixpkgs/blob/master/lib/tests) or [pkgs/test](https://github.com/NixOS/nixpkgs/blob/master/pkgs/test)
- made sure NixOS tests are [linked](https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md#linking-nixos-module-tests-to-a-package) to the relevant packages
- [ ] Tested compilation of all packages that depend on this change using `nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD"`. Note: all changes have to be committed, also see [nixpkgs-review usage](https://github.com/Mic92/nixpkgs-review#usage)
- [ ] Tested basic functionality of all binary files (usually in `./result/bin/`)
- [24.11 Release Notes](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2411.section.md) (or backporting [23.11](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2311.section.md) and [24.05](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2405.section.md) Release notes)
- [ ] (Package updates) Added a release notes entry if the change is major or breaking
- [ ] (Module updates) Added a release notes entry if the change is significant
- [ ] (Module addition) Added a release notes entry if adding a new NixOS module
- [x] Fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md).
<!--
To help with the large amounts of pull requests, we would appreciate your
reviews of other pull requests, especially simple package updates. Just leave a
comment describing what you have tested in the relevant package/service.
Reviewing helps to reduce the average time-to-merge for everyone.
Thanks a lot if you do!
List of open PRs: https://github.com/NixOS/nixpkgs/pulls
Reviewing guidelines: https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md#reviewing-contributions
-->
---
Add a :+1: [reaction] to [pull requests you find important].
[reaction]: https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/
[pull requests you find important]: https://github.com/NixOS/nixpkgs/pulls?q=is%3Aopen+sort%3Areactions-%2B1-desc
2 Likes