rename rootfsFiles to rootdir, add bootablerootdir

This commit is contained in:
Daniel Barlow 2023-12-11 20:49:48 +00:00
parent 133b64613d
commit d707345891
4 changed files with 27 additions and 21 deletions

View file

@ -69,13 +69,22 @@ in
out what's in the image, which is nice if it's unexpectedly huge out what's in the image, which is nice if it's unexpectedly huge
''; '';
}; };
rootfsFiles = mkOption { rootdir = mkOption {
type = types.package; type = types.package;
internal = true; internal = true;
description = '' description = ''
directory of files to package into root filesystem directory of files to package into root filesystem
''; '';
}; };
bootablerootdir = mkOption {
type = types.package;
internal = true;
description = ''
directory of files to package into root filesystem, including
a kernel and appropriate associated gubbins for the
selected bootloader
'';
};
rootfs = mkOption { rootfs = mkOption {
type = types.package; type = types.package;
internal = true; internal = true;
@ -108,7 +117,7 @@ in
inherit kernel; inherit kernel;
inherit dtb; inherit dtb;
}; };
rootfsFiles = rootdir =
let let
inherit (pkgs.pkgsBuildBuild) runCommand; inherit (pkgs.pkgsBuildBuild) runCommand;
in runCommand "mktree" { } '' in runCommand "mktree" { } ''
@ -120,6 +129,15 @@ in
(cd $out && cp -a $path .$path) (cd $out && cp -a $path .$path)
done done
''; '';
bootablerootdir =
let inherit (pkgs.pkgsBuildBuild) runCommand;
in runCommand "add-slash-boot" { } ''
cp -a ${o.rootdir} $out
${if config.boot.loader.extlinux.enable
then "(cd $out && chmod -R +w . && rmdir boot && cp -a ${o.extlinux} boot)"
else ""
}
'';
manifest = writeText "manifest.json" (builtins.toJSON config.filesystem.contents); manifest = writeText "manifest.json" (builtins.toJSON config.filesystem.contents);
}; };
}; };

View file

@ -28,16 +28,12 @@ in
in runCommand "mkfs.ext4" { in runCommand "mkfs.ext4" {
depsBuildBuild = [ e2fsprogs ]; depsBuildBuild = [ e2fsprogs ];
} '' } ''
cp -a ${o.rootfsFiles} tmp tree=${o.bootablerootdir}
${if config.boot.loader.extlinux.enable size=$(du -s --apparent-size --block-size 1024 $tree |cut -f1)
then "(cd tmp && chmod -R +w . && rmdir boot && cp -a ${o.extlinux} boot)"
else ""
}
size=$(du -s --apparent-size --block-size 1024 tmp |cut -f1)
# add 25% for filesystem overhead # add 25% for filesystem overhead
size=$(( 5 * $size / 4)) size=$(( 5 * $size / 4))
dd if=/dev/zero of=$out bs=1024 count=$size dd if=/dev/zero of=$out bs=1024 count=$size
mke2fs -t ext4 -j -d tmp $out mke2fs -t ext4 -j -d $tree $out
''; '';
}; };
}; };

View file

@ -34,12 +34,8 @@ in
in runCommand "make-jffs2" { in runCommand "make-jffs2" {
depsBuildBuild = [ mtdutils ]; depsBuildBuild = [ mtdutils ];
} '' } ''
cp -a ${o.rootfsFiles} tmp tree=${o.bootablerootdir}
${if config.boot.loader.extlinux.enable (cd $tree && mkfs.jffs2 --compression-mode=size ${endian} -e ${toString config.hardware.flash.eraseBlockSize} --enable-compressor=lzo --pad --root . --output $out --squash --faketime )
then "(cd tmp && ln -s ${o.extlinux} boot)"
else ""
}
(cd tmp && mkfs.jffs2 --compression-mode=size ${endian} -e ${toString config.hardware.flash.eraseBlockSize} --enable-compressor=lzo --pad --root . --output $out --squash --faketime )
''; '';
}; };
}; };

View file

@ -36,12 +36,8 @@ in
depsBuildBuild = [ mtdutils ]; depsBuildBuild = [ mtdutils ];
} '' } ''
mkdir tmp mkdir tmp
cp -a ${o.rootfsFiles} tmp tree=${o.bootablerootdir}
${if config.boot.loader.extlinux.enable mkfs.ubifs -x favor_lzo -c ${cfg.maxLEBcount} -m ${cfg.minIOSize} -e ${cfg.eraseBlockSize} -y -r $tree --output $out --squash-uids -o $out
then "(cd tmp && ln -s ${o.extlinux} boot)"
else ""
}
mkfs.ubifs -x favor_lzo -c ${cfg.maxLEBcount} -m ${cfg.minIOSize} -e ${cfg.eraseBlockSize} -y -r tmp --output $out --squash-uids -o $out
''; '';
}; };
}; };