summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--nixos/modules/system/boot/loader/raspberrypi/builder.sh17
-rw-r--r--nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix14
-rw-r--r--pkgs/os-specific/linux/firmware/raspberrypi/default.nix4
3 files changed, 28 insertions, 7 deletions
diff --git a/nixos/modules/system/boot/loader/raspberrypi/builder.sh b/nixos/modules/system/boot/loader/raspberrypi/builder.sh
index f6ccfe493d8..ccb88ca1c52 100644
--- a/nixos/modules/system/boot/loader/raspberrypi/builder.sh
+++ b/nixos/modules/system/boot/loader/raspberrypi/builder.sh
@@ -60,22 +60,26 @@ addEntry() {
     fi
 
     local kernel=$(readlink -f $path/kernel)
-    # local initrd=$(readlink -f $path/initrd)
+    local initrd=$(readlink -f $path/initrd)
 
     if test -n "@copyKernels@"; then
         copyToKernelsDir $kernel; kernel=$result
-        # copyToKernelsDir $initrd; initrd=$result
+        copyToKernelsDir $initrd; initrd=$result
     fi
     
     echo $(readlink -f $path) > $outdir/$generation-system
     echo $(readlink -f $path/init) > $outdir/$generation-init
     cp $path/kernel-params $outdir/$generation-cmdline.txt
-    # echo $initrd > $outdir/$generation-initrd
+    echo $initrd > $outdir/$generation-initrd
     echo $kernel > $outdir/$generation-kernel
 
     if test $(readlink -f "$path") = "$default"; then
-      copyForced $kernel /boot/kernel.img
-      # copyForced $initrd /boot/initrd
+      if [ @version@ -eq 1 ]; then
+        copyForced $kernel /boot/kernel.img
+      else
+        copyForced $kernel /boot/kernel7.img
+      fi
+      copyForced $initrd /boot/initrd
       cp "$(readlink -f "$path/init")" /boot/nixos-init
       echo "`cat $path/kernel-params` init=$path/init" >/boot/cmdline.txt
 
@@ -98,8 +102,11 @@ fwdir=@firmware@/share/raspberrypi/boot/
 copyForced $fwdir/bootcode.bin  /boot/bootcode.bin
 copyForced $fwdir/fixup.dat     /boot/fixup.dat
 copyForced $fwdir/fixup_cd.dat  /boot/fixup_cd.dat
+copyForced $fwdir/fixup_db.dat  /boot/fixup_db.dat
 copyForced $fwdir/start.elf     /boot/start.elf
 copyForced $fwdir/start_cd.elf  /boot/start_cd.elf
+copyForced $fwdir/start_db.elf  /boot/start_db.elf
+copyForced $fwdir/start_x.elf   /boot/start_x.elf
 
 # Remove obsolete files from /boot/old.
 for fn in /boot/old/*linux* /boot/old/*initrd*; do
diff --git a/nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix b/nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix
index 1ea3ddd8867..b7400e333e2 100644
--- a/nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix
+++ b/nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix
@@ -3,6 +3,7 @@
 with lib;
 
 let
+  cfg = config.boot.loader.raspberryPi;
 
   builder = pkgs.substituteAll {
     src = ./builder.sh;
@@ -10,6 +11,7 @@ let
     inherit (pkgs) bash;
     path = [pkgs.coreutils pkgs.gnused pkgs.gnugrep];
     firmware = pkgs.raspberrypifw;
+    version = cfg.version;
   };
 
   platform = pkgs.stdenv.platform;
@@ -29,11 +31,23 @@ in
       '';
     };
 
+    boot.loader.raspberryPi.version = mkOption {
+      default = 2;
+      type = types.int;
+      description = ''
+      '';
+    };
+
   };
 
   config = mkIf config.boot.loader.raspberryPi.enable {
     system.build.installBootLoader = builder;
     system.boot.loader.id = "raspberrypi";
     system.boot.loader.kernelFile = platform.kernelTarget;
+    assertions = [
+      { assertion = (cfg.version == 1 || cfg.version == 2);
+        message = "loader.raspberryPi.version should be 1 or 2";
+      }
+    ];
   };
 }
diff --git a/pkgs/os-specific/linux/firmware/raspberrypi/default.nix b/pkgs/os-specific/linux/firmware/raspberrypi/default.nix
index 690b7dcc40f..4d875d15d48 100644
--- a/pkgs/os-specific/linux/firmware/raspberrypi/default.nix
+++ b/pkgs/os-specific/linux/firmware/raspberrypi/default.nix
@@ -2,14 +2,14 @@
 
 let
 
-  rev = "3ab17ac25e";
+  rev = "b7bbd3d1683e9f3bb11ef86b952adee71e83862f";
 
 in stdenv.mkDerivation {
   name = "raspberrypi-firmware-${rev}";
 
   src = fetchurl {
     url = "https://github.com/raspberrypi/firmware/archive/${rev}.tar.gz";
-    sha256 = "080va4zz858bwwgxam8zy58gpwjpxfg7v5h1q5b4cpbzjihsxcx9";
+    sha256 = "16wpwa1y3imd3la477b3rfbfypssvlh0zjdag3hgkm33aysizijp";
   };
 
   installPhase = ''