Commit 17e1a5cf authored by K900's avatar K900
Browse files

nixos/doc: add release note for DT matching changes

See #341883.
parent 965289e5
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -487,6 +487,8 @@
  place. The GUI components related to the project are non-free and not
  packaged.

- Compatible string matching for `hardware.deviceTree.overlays` has been changed to a more correct behavior. See [below](#sec-release-24.11-migration-dto-compatible) for details.

## Other Notable Changes {#sec-release-24.11-notable-changes}

<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
@@ -611,3 +613,22 @@ in {
  ];
};
```

### `hardware.deviceTree.overlays` compatible string matching {#sec-release-24.11-migration-dto-compatible}

The original compatible string implementation in older NixOS versions relied on substring matching,
which is incorrect for overlays with multiple compatible strings and other cases.

The new behavior is consistent with what other tools already do - the overlay is considered applicable if,
and only if, _any_ of the compatible strings in the overlay match _any_ of the compatible strings in the DT.

To provide some examples:

| Overlay `compatible` | DT `compatible` | Pre-24.11 behavior | Correct behavior | Notes                                      |
|----------------------|-----------------|--------------------|------------------|--------------------------------------------|
| `"foo"`              | `"foo", "bar"`  | match              | match            | Most common use case does not change       |
| `"foo"`              | `"foobar"`      | match              | no match         | Substrings should not be matched           |
| `"foo bar"`          | `"foo", "bar"`  | match              | no match         | Separators should not be matched to spaces |
| `"foo", "bar"`       | `"baz", "bar"`  | no match           | match            | One compatible string matching is enough   |

Note that this also allows writing overlays that explicitly apply to multiple boards.