108 lines
3 KiB
Nix
108 lines
3 KiB
Nix
{
|
|
inputs = {
|
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-23.05";
|
|
};
|
|
|
|
outputs = { self, nixpkgs }:
|
|
let
|
|
system = "x86_64-linux";
|
|
crossSystem = "aarch64-linux";
|
|
pkgs = import nixpkgs {
|
|
inherit system;
|
|
|
|
overlays = [
|
|
(self: super: {
|
|
systemd = super.systemd.override {
|
|
pname = "systemd-minimal";
|
|
withAcl = false;
|
|
withAnalyze = false;
|
|
withApparmor = false;
|
|
withAudit = false;
|
|
withCompression = false;
|
|
withCoredump = false;
|
|
withCryptsetup = false;
|
|
withDocumentation = false;
|
|
withEfi = false;
|
|
withFido2 = false;
|
|
withHostnamed = false;
|
|
withHomed = false;
|
|
withImportd = false;
|
|
withLibBPF = false;
|
|
withLibidn2 = false;
|
|
withLocaled = false;
|
|
withMachined = false;
|
|
withNetworkd = false;
|
|
withNss = false;
|
|
withOomd = false;
|
|
withPCRE2 = false;
|
|
withPolkit = false;
|
|
withPortabled = false;
|
|
withRemote = false;
|
|
withResolved = false;
|
|
withShellCompletions = false;
|
|
withTimedated = false;
|
|
withTimesyncd = false;
|
|
withTpm2Tss = false;
|
|
withUserDb = false;
|
|
# This is necessary for any installation
|
|
# withPam = false;
|
|
# withHwdb = false;
|
|
# withLogind = false;
|
|
};
|
|
|
|
libaom = super.libaom.override {
|
|
enableButteraugli = false;
|
|
};
|
|
})
|
|
];
|
|
|
|
crossSystem = {
|
|
gcc.cpu = "cortex-a53";
|
|
config = "aarch64-unknown-linux-gnu";
|
|
linux-kernel = {
|
|
DTB = true;
|
|
autoModules = true;
|
|
baseConfig = "defconfig";
|
|
|
|
extraConfig = ''
|
|
# Raspberry Pi 3 stuff. Not needed for s >= 4.10.
|
|
ARCH_BCM2835 y
|
|
BCM2835_MBOX y
|
|
BCM2835_WDT y
|
|
RASPBERRYPI_FIRMWARE y
|
|
RASPBERRYPI_POWER y
|
|
SERIAL_8250_BCM2835AUX y
|
|
SERIAL_8250_EXTENDED y
|
|
SERIAL_8250_SHARE_IRQ y
|
|
|
|
# Cavium ThunderX stuff.
|
|
PCI_HOST_THUNDER_ECAM y
|
|
|
|
# Nvidia Tegra stuff.
|
|
PCI_TEGRA y
|
|
|
|
# The default (=y) forces us to have the XHCI firmware available in initrd,
|
|
# which our initrd builder can't currently do easily.
|
|
USB_XHCI_TEGRA m
|
|
'';
|
|
|
|
name = "aarch64-multiplatform";
|
|
preferBuiltin = true;
|
|
target = "Image";
|
|
};
|
|
};
|
|
};
|
|
in
|
|
{
|
|
packages.${crossSystem} = pkgs;
|
|
|
|
nixosConfigurations.triviOS = nixpkgs.lib.nixosSystem {
|
|
inherit pkgs;
|
|
system = crossSystem;
|
|
modules = [ ./triviOS ];
|
|
};
|
|
|
|
formatter.${system} = pkgs.pkgsBuildBuild.nixpkgs-fmt;
|
|
};
|
|
}
|