initramfs: pass module list as a nix expression rather than a file

master
Adam Joseph 2 years ago
parent 4c202a6d12
commit 549cd6add0

@ -3,8 +3,13 @@
# initramfs-formatted `cpio` archive from their contents.
{ nixpkgsOnBuildForHost
, nixpkgsOnBuildForBuild
, lib
, userspace
, kernel
# a list of paths (relative to ${kernel}/lib/modules/*/kernel) to modules .ko
# files which should be included in the initrd
, modules ? [ ]
}:
nixpkgsOnBuildForHost.stdenv.mkDerivation {
@ -12,20 +17,22 @@ nixpkgsOnBuildForHost.stdenv.mkDerivation {
nativeBuildInputs = with nixpkgsOnBuildForBuild; [ findutils cpio ];
srcs = [ ];
dontUnpack = true;
modulesList = (lib.concatMapStringsSep "\n" (m: "${kernel.version}/kernel/" + m) modules)+"\n";
passAsFile = [ "modulesList" ];
buildPhase = ''
mkdir build
mkdir -p build/lib/modules
BUILD=$(pwd)/build
pushd ${kernel}/lib/modules/
cat ${userspace}/modules-insmod.txt | cpio -p -d $BUILD/lib/modules
popd
cat $modulesListPath | cpio -p -d $BUILD/lib/modules
popd
pushd ${userspace}
find . | cpio -p -d $BUILD/
popd
find . | cpio -p -d $BUILD/
popd
chmod -R u+w $BUILD
pushd $BUILD
find . | cpio --create -H newc -R +0:+0 > $out
popd
find . | cpio --create -H newc -R +0:+0 > $out
popd
'';
dontInstall = true;
}

@ -61,6 +61,10 @@ in {
inherit modules_noinsmod;
};
initramfs = prev.initramfs.override {
modules = modules_insmod ++ modules_noinsmod;
};
coreboot =
let atf = final.nixpkgsOnBuildForHost.callPackage (import ./atf) {
buildArmTrustedFirmware = (final.nixpkgsOnBuildForHost.callPackage (import <nixpkgs/pkgs/misc/arm-trusted-firmware>) {

Loading…
Cancel
Save