-
-
Save exarkun/36219d68410cb3b4e6ac49d08f32a120 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ config, pkgs, ... }: | |
{ | |
imports = [ <nixpkgs/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix> ]; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# To build, use: | |
# nix-build nixos -I nixos-config=nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix -A config.system.build.sdImage | |
{ config, lib, pkgs, ... }: | |
let | |
extlinux-conf-builder = | |
import ../../system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.nix { | |
inherit pkgs; | |
}; | |
in | |
{ | |
imports = [ | |
../../profiles/base.nix | |
../../profiles/installation-device.nix | |
./sd-image.nix | |
]; | |
assertions = lib.singleton { | |
assertion = pkgs.stdenv.hostPlatform.system == "armv7l-linux" | |
&& pkgs.stdenv.hostPlatform.system == pkgs.stdenv.buildPlatform.system; | |
message = "sd-image-armv7l-multiplatform.nix can be only built natively on ARMv7; " + | |
"it cannot be cross compiled"; | |
}; | |
boot.loader.grub.enable = false; | |
boot.loader.generic-extlinux-compatible.enable = true; | |
boot.consoleLogLevel = lib.mkDefault 7; | |
boot.kernelPackages = pkgs.linuxPackages_latest; | |
# The serial ports listed here are: | |
# - ttyS0: for Tegra (Jetson TK1) | |
# - ttymxc0: for i.MX6 (Wandboard) | |
# - ttyAMA0: for Allwinner (pcDuino3 Nano) and QEMU's -machine virt | |
# - ttyO0: for OMAP (BeagleBone Black) | |
# - ttySAC2: for Exynos (ODROID-XU3) | |
boot.kernelParams = ["console=ttyS0,115200n8" "console=ttymxc0,115200n8" "console=ttyAMA0,115200n8" "console=ttyO0,115200n8" "console=ttySAC2,115200n8" "console=tty0"]; | |
sdImage = { | |
populateBootCommands = let | |
configTxt = pkgs.writeText "config.txt" '' | |
# Prevent the firmware from smashing the framebuffer setup done by the mainline kernel | |
# when attempting to show low-voltage or overtemperature warnings. | |
avoid_warnings=1 | |
[pi2] | |
kernel=u-boot-rpi2.bin | |
[pi3] | |
kernel=u-boot-rpi3.bin | |
# U-Boot used to need this to work, regardless of whether UART is actually used or not. | |
# TODO: check when/if this can be removed. | |
enable_uart=1 | |
''; | |
in '' | |
(cd ${pkgs.raspberrypifw}/share/raspberrypi/boot && cp bootcode.bin fixup*.dat start*.elf $NIX_BUILD_TOP/boot/) | |
cp ${pkgs.ubootRaspberryPi2}/u-boot.bin boot/u-boot-rpi2.bin | |
cp ${pkgs.ubootRaspberryPi3_32bit}/u-boot.bin boot/u-boot-rpi3.bin | |
cp ${configTxt} boot/config.txt | |
${extlinux-conf-builder} -t 3 -c ${config.system.build.toplevel} -d ./boot | |
''; | |
}; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment