commit db4f098c02f3597d6fe696fc9741a9c3824e0505
parent 1347937345de22a08010b4a01c1c430045bfa723
Author: Daniel Barlow <dan@telent.net>
Date: Mon, 23 Dec 2024 11:21:58 +0000
add fit bootloader
this is for the belkin rt3200, whose uboot doesn't do
extlinux but can load a fit from a ubifs. It adds the
a kernel+dtb as /boot/fit
Diffstat:
2 files changed, 28 insertions(+), 0 deletions(-)
diff --git a/modules/outputs.nix b/modules/outputs.nix
@@ -14,6 +14,7 @@ in
./outputs/squashfs.nix
./outputs/vmroot.nix
./outputs/boot-extlinux.nix
+ ./outputs/boot-fit.nix
./outputs/uimage.nix
./outputs/updater
];
diff --git a/modules/outputs/boot-fit.nix b/modules/outputs/boot-fit.nix
@@ -0,0 +1,27 @@
+{
+ config
+, pkgs
+, lib
+, ...
+}:
+let
+ inherit (lib) mkIf mkEnableOption mkOption types concatStringsSep;
+ inherit (pkgs.pseudofile) dir symlink;
+ cfg = config.boot.loader.fit;
+ o = config.system.outputs;
+ cmdline = concatStringsSep " " config.boot.commandLine;
+ wantsDtb = config.hardware.dts ? src && config.hardware.dts.src != null;
+in {
+ options.boot.loader.fit.enable = mkEnableOption "FIT in /boot";
+
+ config = mkIf cfg.enable {
+ system.outputs.bootfiles = pkgs.runCommand "boot-fit" {} ''
+ mkdir $out
+ cd $out
+ cp ${o.uimage} fit
+ '';
+ filesystem = dir {
+ boot = symlink config.system.outputs.bootfiles;
+ };
+ };
+}