summary refs log tree commit diff
path: root/nixos/modules/installer/cd-dvd
diff options
context:
space:
mode:
authorTuomas Tynkkynen <tuomas@tuxera.com>2016-06-19 22:49:36 +0300
committerTuomas Tynkkynen <tuomas@tuxera.com>2016-07-04 02:07:13 +0300
commit36f4a8a485732da98e1fcf40945ecda305677579 (patch)
treea04514dcf7e01088337c7f3d7bf3d809ea827c6d /nixos/modules/installer/cd-dvd
parentd8cd615720524bf7600ff31e4ba3779264c084e9 (diff)
downloadnixlib-36f4a8a485732da98e1fcf40945ecda305677579.tar
nixlib-36f4a8a485732da98e1fcf40945ecda305677579.tar.gz
nixlib-36f4a8a485732da98e1fcf40945ecda305677579.tar.bz2
nixlib-36f4a8a485732da98e1fcf40945ecda305677579.tar.lz
nixlib-36f4a8a485732da98e1fcf40945ecda305677579.tar.xz
nixlib-36f4a8a485732da98e1fcf40945ecda305677579.tar.zst
nixlib-36f4a8a485732da98e1fcf40945ecda305677579.zip
sd-image-armv7l-multiplatform.nix: Preliminary Raspberry Pi 2/3 support
- RPi3 successfully gets to U-Boot, but then fails to boot the kernel
  due to a missing device tree file. This should get added to the 4.8
  kernel release once this patch is merged: https://lkml.org/lkml/2016/6/1/841
- RPi2 is not tested, but it should successfully boot the NixOS image.
Diffstat (limited to 'nixos/modules/installer/cd-dvd')
-rw-r--r--nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix22
1 files changed, 20 insertions, 2 deletions
diff --git a/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix b/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix
index 715deca02b58..80fb47072286 100644
--- a/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix
+++ b/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix
@@ -19,6 +19,9 @@ in
       "it cannot be cross compiled";
   };
 
+  # Needed by RPi firmware
+  nixpkgs.config.allowUnfree = true;
+
   boot.loader.grub.enable = false;
   boot.loader.generic-extlinux-compatible.enable = true;
 
@@ -30,8 +33,23 @@ in
   users.extraUsers.root.initialHashedPassword = "";
 
   sdImage = {
-    populateBootCommands = ''
+    populateBootCommands = let
+      configTxt = pkgs.writeText "config.txt" ''
+        [pi2]
+        kernel=u-boot-rpi2.bin
+
+        [pi3]
+        kernel=u-boot-rpi3.bin
+        enable_uart=1
+      '';
+      in ''
+        for f in bootcode.bin fixup.dat start.elf; do
+          cp ${pkgs.raspberrypifw}/share/raspberrypi/boot/$f boot/
+        done
+        cp ${pkgs.ubootRaspberryPi2}/u-boot.bin boot/u-boot-rpi2.bin
+        cp ${pkgs.ubootRaspberryPi3}/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
-    '';
+      '';
   };
 }