Skip to content
This repository was archived by the owner on Mar 23, 2025. It is now read-only.

Commit 441d32f

Browse files
committed
safer activation
1 parent ed2df92 commit 441d32f

File tree

1 file changed

+32
-3
lines changed

1 file changed

+32
-3
lines changed

rpi/default.nix

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,38 @@
88
# generated config.txt
99
system.activationScripts.raspberrypi = {
1010
text = ''
11-
cp ${pkgs.uboot_rpi_arm64}/u-boot.bin /boot/firmware/u-boot-rpi-arm64.bin
12-
cp -r ${pkgs.raspberrypifw}/share/raspberrypi/boot/{start*.elf,*.dtb,bootcode.bin,fixup*.dat,overlays} /boot/firmware
13-
cp ${config.hardware.raspberry-pi.config-output} /boot/firmware/config.txt
11+
shopt -s nullglob
12+
13+
TARGET_FIRMWARE_DIR="/boot/firmware"
14+
TARGET_OVERLAYS_DIR="$TARGET_FIRMWARE_DIR/overlays"
15+
TMPFILE="$TARGET_FIRMWARE_DIR/tmp"
16+
UBOOT="${pkgs.uboot_rpi_arm64}/u-boot.bin"
17+
SRC_FIRMWARE_DIR="${pkgs.raspberrypifw}/share/raspberrypi/boot"
18+
STARTFILES=("$SRC_FIRMWARE_DIR"/start*.elf)
19+
DTBS=("$SRC_FIRMWARE_DIR"/*.dtb)
20+
BOOTCODE="$SRC_FIRMWARE_DIR/bootcode.bin"
21+
FIXUPS=("$SRC_FIRMWARE_DIR"/fixup*.dat)
22+
SRC_OVERLAYS_DIR="$SRC_FIRMWARE_DIR/overlays"
23+
SRC_OVERLAYS=("$SRC_OVERLAYS_DIR"/*)
24+
CONFIG="${config.hardware.raspberry-pi.config-output}"
25+
26+
cp "$UBOOT" "$TMPFILE"
27+
mv -T "$TMPFILE" "$TARGET_FIRMWARE_DIR/u-boot-rpi-arm64.bin"
28+
29+
cp "$CONFIG" "$TMPFILE"
30+
mv -T "$TMPFILE" "$TARGET_FIRMWARE_DIR/config.txt"
31+
32+
for SRC in "''${STARTFILES[@]}" "''${DTBS[@]}" "$BOOTCODE" "''${FIXUPS[@]}"
33+
do
34+
cp "$SRC" "$TMPFILE"
35+
mv -T "$TMPFILE" "$TARGET_FIRMWARE_DIR/$(basename "$SRC")"
36+
done
37+
38+
for SRC in "''${SRC_OVERLAYS[@]}"
39+
do
40+
cp "$SRC" "$TMPFILE"
41+
mv -T "$TMPFILE" "$TARGET_OVERLAYS_DIR/$(basename "$SRC")"
42+
done
1443
'';
1544
};
1645

0 commit comments

Comments
 (0)