summary refs log tree commit diff
path: root/pkgs/os-specific/linux/device-tree/default.nix
blob: 13d819a08a5b055355a708d6630dc8ff9b7b5d95 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{ stdenvNoCC, dtc, findutils }:

with stdenvNoCC.lib; {
  applyOverlays = (base: overlays: stdenvNoCC.mkDerivation {
    name = "device-tree-overlays";
    nativeBuildInputs = [ dtc findutils ];
    buildCommand = let
      quotedDtbos = concatMapStringsSep " " (o: "\"${toString o}\"") (toList overlays);
    in ''
      for dtb in $(find ${base} -name "*.dtb" ); do
        outDtb=$out/$(realpath --relative-to "${base}" "$dtb")
        mkdir -p "$(dirname "$outDtb")"
        fdtoverlay -o "$outDtb" -i "$dtb" ${quotedDtbos};
      done
    '';
  });
}