nixos-aarch64-images/flake.nix

90 lines
2.6 KiB
Nix

{
description = "Build NixOS images for various ARM single computer boards";
# pin this to unstable
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/master";
};
outputs = { self, nixpkgs }: {
packages.x86_64-linux =
let
pkgs = import nixpkgs {
system = "x86_64-linux";
};
aarch64Pkgs = import pkgs.path {
system = "aarch64-linux";
};
authorized-keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICTz/raHvMluy7wPhO1P64ZgyVu7ZQrRgKL0CT8UcOdQ asonix@firestar"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBlkVa6HyTPIoJoieFc9seM5Y31iaRsgHH3xH2tlxCSV asonix@graystripe"
];
kernels = aarch64Pkgs.callPackage ./pkgs/linux { };
system = aarch64Pkgs.callPackage ./pkgs/system {
inherit nixpkgs;
inherit authorized-keys;
kernel = kernels.testing-rockchip;
};
buildImage = pkgs.callPackage ./pkgs/build-image { };
rockchip = { system, uboot }: pkgs.callPackage ./images/rockchip.nix {
inherit uboot;
inherit buildImage;
image = pkgs.callPackage ./pkgs/aarch64-image {
inherit system;
};
};
quartzUBoots = aarch64Pkgs.callPackage ./pkgs/uboot-quartz64 { };
in
{
quartz64a = rockchip {
system = system.quartz64a;
uboot = quartzUBoots.ubootQuartz64a;
};
quartz64b = rockchip {
system = system.quartz64b;
uboot = quartzUBoots.ubootQuartz64b;
};
soquartz-model-a = rockchip {
system = system.soquartz-model-a;
uboot = quartzUBoots.ubootSoQuartz;
};
soquartz-cm4 = rockchip {
system = system.soquartz-cm4;
uboot = quartzUBoots.ubootSoQuartz;
};
soquartz-blade = rockchip {
system = system.soquartz-blade;
uboot = quartzUBoots.ubootSoQuartz;
};
rock64 = rockchip {
system = system.rock64;
uboot = aarch64Pkgs.ubootRock64;
};
rockPro64 = rockchip {
system = system.rockPro64;
uboot = aarch64Pkgs.ubootRockPro64;
};
rockPro64v2 = rockchip {
system = system.rockPro64v2;
uboot = aarch64Pkgs.ubootRockPro64;
};
roc-pc-rk3399 = rockchip {
system = system.rock-pc-rk3399;
uboot = aarch64Pkgs.ubootROCPCRK3399;
};
pinebookPro = rockchip {
system = system.pinebookPro;
uboot = aarch64Pkgs.ubootPinebookPro;
};
};
};
}