Merge pull request #192672 from amjoseph-nixpkgs/pr/nixos/sd/powerpc64le
enable NixOS installer for powerpc64le
This commit is contained in:
commit
b65d2ea436
1 changed files with 49 additions and 0 deletions
49
nixos/modules/installer/sd-card/sd-image-powerpc64le.nix
Normal file
49
nixos/modules/installer/sd-card/sd-image-powerpc64le.nix
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
# To build, use:
|
||||||
|
# nix-build nixos -I nixos-config=nixos/modules/installer/sd-card/sd-image-powerpc64le.nix -A config.system.build.sdImage
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../../profiles/base.nix
|
||||||
|
../../profiles/installation-device.nix
|
||||||
|
./sd-image.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.loader = {
|
||||||
|
# powerpc64le-linux typically uses petitboot
|
||||||
|
grub.enable = false;
|
||||||
|
generic-extlinux-compatible = {
|
||||||
|
# petitboot is not does not support all of the extlinux extensions to
|
||||||
|
# syslinux, but its parser is very forgiving; it essentially ignores
|
||||||
|
# whatever it doesn't understand. See below for a filename adjustment.
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.consoleLogLevel = lib.mkDefault 7;
|
||||||
|
boot.kernelParams = [ "console=hvc0" ];
|
||||||
|
|
||||||
|
sdImage = {
|
||||||
|
populateFirmwareCommands = "";
|
||||||
|
populateRootCommands = ''
|
||||||
|
mkdir -p ./files/boot
|
||||||
|
${config.boot.loader.generic-extlinux-compatible.populateCmd} \
|
||||||
|
-c ${config.system.build.toplevel} \
|
||||||
|
-d ./files/boot
|
||||||
|
''
|
||||||
|
# https://github.com/open-power/petitboot/blob/master/discover/syslinux-parser.c
|
||||||
|
# petitboot will look in these paths (plus all-caps versions of them):
|
||||||
|
# /boot/syslinux/syslinux.cfg
|
||||||
|
# /syslinux/syslinux.cfg
|
||||||
|
# /syslinux.cfg
|
||||||
|
+ ''
|
||||||
|
mv ./files/boot/extlinux ./files/boot/syslinux
|
||||||
|
mv ./files/boot/syslinux/extlinux.conf ./files/boot/syslinux/syslinux.cfg
|
||||||
|
''
|
||||||
|
# petitboot does not support relative paths for LINUX or INITRD; it prepends
|
||||||
|
# a `/` when parsing these fields
|
||||||
|
+ ''
|
||||||
|
sed -i 's_^\(\W\W*\(INITRD\|initrd\|LINUX\|linux\)\W\)\.\./_\1/boot/_' ./files/boot/syslinux/syslinux.cfg
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue