liminix/tests/tftpboot/configuration.nix

47 lines
1.3 KiB
Nix

{ config, pkgs, lib, lim, ... } :
let
inherit (pkgs.pseudofile) dir symlink;
dts = pkgs.runCommand "qemu.dts" {
nativeBuildInputs = with pkgs.pkgsBuildBuild; [ dtc qemu ];
} ''
qemu-system-${pkgs.stdenv.hostPlatform.qemuArch} \
-machine virt -machine dumpdtb=tmp.dtb
dtc -I dtb -O dts -o $out tmp.dtb
# https://stackoverflow.com/a/69890137,
# XXX try fdtput $out -p -t s /pl061@9030000 status disabled
# instead of using sed
sed -i $out -e 's/compatible = "arm,pl061.*/status = "disabled";/g'
'';
in {
imports = [
../../modules/outputs/ext4fs.nix
../../modules/outputs/tftpboot.nix
];
config = {
# use extracted dts if it was null in the device
# definition, use actual dts if provided
hardware.dts.src = lib.mkOverride 500 dts;
boot.tftp = {
loadAddress =
let offsets = {
mips = "0x88000000";
arm = "0x44000000";
aarch64 = "0x44000000";
};
in lim.parseInt offsets.${pkgs.stdenv.hostPlatform.qemuArch} ;
serverip = "10.0.2.2";
ipaddr = "10.0.2.15";
};
boot.imageFormat = "fit";
rootfsType = "ext4";
filesystem = dir {
hello = {
type = "f";
uid = 7;
gid = 24;
file = "hello world";
};
};
};
}