Files
nix-config/modules/nixos/hardware/raspberry-pi/generational/kernelboot-gen-builder.sh
mjallen18 70002a19e2 hmm
2026-04-07 18:39:42 -05:00

68 lines
1.6 KiB
Bash
Executable File

#! @bash@/bin/sh -e
# shellcheck disable=SC3037,SC3043,SC3044
shopt -s nullglob
export PATH=/empty:@path@
copyForced() {
local src="$1"
local dst="$2"
local dstTmp="$dst.tmp.$$"
cp "$src" "$dstTmp"
mv "$dstTmp" "$dst"
}
# Copy generation's kernel, initrd, cmdline to `genDir`.
addEntry() {
local generationPath="$1"
local generationName="$2"
local genDir="$3"
if ! { [ -e "$generationPath/kernel" ] && [ -e "$generationPath/initrd" ]; }; then
return
fi
echo -n "kernel..."
local kernel="$(readlink -f "$generationPath/kernel")"
local initrd="$(readlink -f "$generationPath/initrd")"
readlink -f "$generationPath" > "$genDir/system-link"
echo "$kernel" > "$genDir/kernel-link"
copyForced "$kernel" "$genDir/kernel.img"
copyForced "$initrd" "$genDir/initrd"
echo "$(cat "$generationPath/kernel-params") init=$generationPath/init" > "$genDir/cmdline.txt"
echo -n "device tree..."
@installDeviceTree@ -c "$generationPath" -d "$genDir"
echo
}
usage() {
echo "usage: $0 -c <path-to-configuration> -n <configuration-name> -d <installation-directory>" >&2
exit 1
}
generationPath= # Path to nixos configuration/generation
generationName= # Name of the generation
target=/boot/firmware # Target directory
echo "$0: $@"
while getopts "c:n:d:" opt; do
case "$opt" in
c) generationPath="$OPTARG" ;;
n) generationName="$OPTARG" ;;
d) target="$OPTARG" ;;
\?) usage ;;
esac
done
addEntry "$generationPath" "$generationName" "$target"
echo "kernel boot files installed for nixos generation '$generationName'"