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. # initramfs-formatted `cpio` archive from their contents.
{ nixpkgsOnBuildForHost { nixpkgsOnBuildForHost
, nixpkgsOnBuildForBuild , nixpkgsOnBuildForBuild
, lib
, userspace , userspace
, kernel , 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 { nixpkgsOnBuildForHost.stdenv.mkDerivation {
@ -12,20 +17,22 @@ nixpkgsOnBuildForHost.stdenv.mkDerivation {
nativeBuildInputs = with nixpkgsOnBuildForBuild; [ findutils cpio ]; nativeBuildInputs = with nixpkgsOnBuildForBuild; [ findutils cpio ];
srcs = [ ]; srcs = [ ];
dontUnpack = true; dontUnpack = true;
modulesList = (lib.concatMapStringsSep "\n" (m: "${kernel.version}/kernel/" + m) modules)+"\n";
passAsFile = [ "modulesList" ];
buildPhase = '' buildPhase = ''
mkdir build mkdir build
mkdir -p build/lib/modules mkdir -p build/lib/modules
BUILD=$(pwd)/build BUILD=$(pwd)/build
pushd ${kernel}/lib/modules/ pushd ${kernel}/lib/modules/
cat ${userspace}/modules-insmod.txt | cpio -p -d $BUILD/lib/modules cat $modulesListPath | cpio -p -d $BUILD/lib/modules
popd popd
pushd ${userspace} pushd ${userspace}
find . | cpio -p -d $BUILD/ find . | cpio -p -d $BUILD/
popd popd
chmod -R u+w $BUILD chmod -R u+w $BUILD
pushd $BUILD pushd $BUILD
find . | cpio --create -H newc -R +0:+0 > $out find . | cpio --create -H newc -R +0:+0 > $out
popd popd
''; '';
dontInstall = true; dontInstall = true;
} }

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

Loading…
Cancel
Save