Try integrating SD image build into flake
This commit is contained in:
parent
589594f5df
commit
5cb3d75fb4
43
flake.lock
43
flake.lock
|
@ -1,46 +1,12 @@
|
|||
{
|
||||
"nodes": {
|
||||
"aarch64-linux-testing": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1673931702,
|
||||
"narHash": "sha256-vayVq8NRnw1XO9jAFkry0SCg9xAvbGctvfHaLcOAkoc=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "e43d8326bcf8ba7810289080aba3491dfc06786c",
|
||||
"revCount": 9,
|
||||
"type": "git",
|
||||
"url": "https://git.asonix.dog/asonix/aarch64-linux-testing.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.asonix.dog/asonix/aarch64-linux-testing.git"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1673563280,
|
||||
"narHash": "sha256-27+ZVRylsm7HwI3rUt6TFh3lrgzrvToJscL44fFd25Q=",
|
||||
"lastModified": 1673980697,
|
||||
"narHash": "sha256-txClbiw+nhpS/LHDDYrN2VEeOQmuhhP74mTU8WWWBPQ=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "e0c17a48c475a03775833892373777892a6b8ff6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "master",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1673975480,
|
||||
"narHash": "sha256-7MzFr9FqSw0ImmfpuPy9fCNm+7kLdDN6Ko53Ojo7fNA=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "856cf901c0ae31f99f0d43ecffabc196efd0c459",
|
||||
"rev": "e8731b877886461a854ea1310d5dde3ddd358b80",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -52,8 +18,7 @@
|
|||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"aarch64-linux-testing": "aarch64-linux-testing",
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
89
flake.nix
89
flake.nix
|
@ -1,48 +1,89 @@
|
|||
{
|
||||
description = "Build NixOS images for various ARM single computer boards";
|
||||
|
||||
# pin this to unstable
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/master";
|
||||
aarch64-linux-testing.url = "git+https://git.asonix.dog/asonix/aarch64-linux-testing.git";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, aarch64-linux-testing }: {
|
||||
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 { };
|
||||
aarch64Image = fdt: pkgs.callPackage ./pkgs/aarch64-image {
|
||||
aarch64-image =
|
||||
let
|
||||
base-path = aarch64-linux-testing.images.installer fdt;
|
||||
image-name = (aarch64-linux-testing.nixosConfigurations.installer fdt).config.sdImage.imageName;
|
||||
in
|
||||
"${base-path}/sd-image/${image-name}.zst";
|
||||
};
|
||||
rockchip = fdt: uboot: pkgs.callPackage ./images/rockchip.nix {
|
||||
inherit fdt;
|
||||
|
||||
rockchip = { system, uboot }: pkgs.callPackage ./images/rockchip.nix {
|
||||
inherit uboot;
|
||||
inherit aarch64Image buildImage;
|
||||
inherit buildImage;
|
||||
|
||||
image = pkgs.callPackage ./pkgs/aarch64-image {
|
||||
inherit system;
|
||||
};
|
||||
};
|
||||
quartzUBoots = aarch64Pkgs.callPackage ./pkgs/uboot-quartz64.nix { };
|
||||
|
||||
quartzUBoots = aarch64Pkgs.callPackage ./pkgs/uboot-quartz64 { };
|
||||
in
|
||||
{
|
||||
quartz64a = rockchip "rockchip/rk3566-quartz64-a.dtb" quartzUBoots.ubootQuartz64a;
|
||||
quartz64b = rockchip "rockchip/rk3566-quartz64-b.dtb" quartzUBoots.ubootQuartz64b;
|
||||
soquartz-model-a = rockchip "rockchip/rk3566-soquartz-model-a.dtb" quartzUBoots.ubootSoQuartz;
|
||||
soquartz-cm4 = rockchip "rockchip/rk3566-soquartz-cm4.dtb" quartzUBoots.ubootSoQuartz;
|
||||
soquartz-blade = rockchip "rockchip/rk3566-soquartz-blade.dtb" quartzUBoots.ubootSoQuartz;
|
||||
rock64 = rockchip "rockchip/rk3328-rock64.dtb" aarch64Pkgs.ubootRock64;
|
||||
rockPro64 = rockchip "rockchip/rk3399-rockpro64.dtb" aarch64Pkgs.ubootRockPro64;
|
||||
rockPro64v2 = rockchip "rockchip/rk3399-rockpro64-v2.dtb" aarch64Pkgs.ubootRockPro64;
|
||||
roc-pc-rk3399 = rockchip "rockchip/rk3399-roc-pc.dtb" aarch64Pkgs.ubootROCPCRK3399;
|
||||
pinebookPro = rockchip "rockchipo/rk3399-pinebook-pro.dtb" aarch64Pkgs.ubootPinebookPro;
|
||||
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;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
{ lib
|
||||
, buildImage
|
||||
, uboot
|
||||
, aarch64Image
|
||||
, fdt
|
||||
, image
|
||||
, extraConfig ? { }
|
||||
}:
|
||||
|
||||
|
@ -27,7 +26,7 @@ buildImage {
|
|||
start = ubootOffset;
|
||||
};
|
||||
nixos = {
|
||||
source = aarch64Image fdt;
|
||||
source = image;
|
||||
start = rootOffset;
|
||||
attrs = "LegacyBIOSBootable";
|
||||
type = "b921b045-1df0-41c3-af44-4c6f280d3fae";
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
{ stdenv, fetchurl, zstd, aarch64-image }:
|
||||
{ stdenv, fetchurl, zstd, system }:
|
||||
|
||||
let
|
||||
base-path = system.config.system.build.sdImage;
|
||||
image-name = system.config.sdImage.imageName;
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
name = "aarch64-image";
|
||||
src = aarch64-image;
|
||||
src = "${base-path}/sd-image/${image-name}.zst";
|
||||
preferLocalBuild = true;
|
||||
dontUnpack = true;
|
||||
dontBuild = true;
|
||||
|
|
42
pkgs/linux/default.nix
Normal file
42
pkgs/linux/default.nix
Normal file
|
@ -0,0 +1,42 @@
|
|||
{ pkgs, lib }:
|
||||
|
||||
with pkgs.linuxKernel; {
|
||||
testing = kernels.linux_testing;
|
||||
|
||||
testing-rockchip = packagesFor (kernels.linux_testing.override {
|
||||
structuredExtraConfig = with lib.kernel; {
|
||||
SND_SOC_RK817 = yes;
|
||||
STMMAC_ETH = yes;
|
||||
MOTORCOMM_PHY = yes;
|
||||
MMC_DW = yes;
|
||||
MMC_DW_ROCKCHIP = yes;
|
||||
MMC_SDHCI_OF_DWCMSHC = yes;
|
||||
PCIE_ROCKCHIP_DW_HOST = yes;
|
||||
PHY_ROCKCHIP_NANENG_COMBO_PHY = yes;
|
||||
ROCKCHIP_DW_HDMI = yes;
|
||||
PHY_ROCKCHIP_INNO_DSIDPHY = yes;
|
||||
ROCKCHIP_VOP2 = yes;
|
||||
ARCH_ROCKCHIP = yes;
|
||||
ROCKCHIP_PHY = yes;
|
||||
PHY_ROCKCHIP_INNO_USB2 = yes;
|
||||
RTC_DRV_RK808 = yes;
|
||||
COMMON_CLK_RK808 = yes;
|
||||
MFD_RK808 = yes;
|
||||
CHARGER_RK817 = yes;
|
||||
REGULATOR_RK808 = yes;
|
||||
ROCKCHIP_PM_DOMAINS = yes;
|
||||
GPIO_ROCKCHIP = yes;
|
||||
PINCTRL_ROCKCHIP = yes;
|
||||
PWM_ROCKCHIP = yes;
|
||||
ROCKCHIP_IOMMU = yes;
|
||||
ROCKCHIP_MBOX = yes;
|
||||
ROCKCHIP_SARADC = yes;
|
||||
ROCKCHIP_THERMAL = yes;
|
||||
SPI_ROCKCHIP = yes;
|
||||
VIDEO_HANTRO_ROCKCHIP = yes;
|
||||
ROCKCHIP_IODOMAIN = yes;
|
||||
COMMON_CLK_ROCKCHIP = yes;
|
||||
PHY_ROCKCHIP_INNO_CSIDPHY = yes;
|
||||
};
|
||||
});
|
||||
}
|
46
pkgs/system/default.nix
Normal file
46
pkgs/system/default.nix
Normal file
|
@ -0,0 +1,46 @@
|
|||
{ nixpkgs, pkgs, lib, kernel, authorized-keys }:
|
||||
|
||||
let
|
||||
buildSystem = fdt: lib.nixosSystem {
|
||||
system = "aarch64-linux";
|
||||
|
||||
modules = [
|
||||
"${nixpkgs}/nixos/modules/installer/sd-card/sd-image-aarch64.nix"
|
||||
{
|
||||
nixpkgs.overlays = [
|
||||
(final: super: {
|
||||
zfs = super.zfs.overrideAttrs (_: {
|
||||
meta.platforms = [ ];
|
||||
});
|
||||
})
|
||||
];
|
||||
|
||||
users.users.root.initialHashedPassword = "";
|
||||
users.users.root.openssh.authorizedKeys.keys = authorized-keys;
|
||||
|
||||
services.openssh.enable = true;
|
||||
|
||||
networking.hostName = "nixos-aarch64";
|
||||
|
||||
boot.kernelPackages = kernel;
|
||||
boot.kernelParams = [ "console=ttyS2,1500000n8" ];
|
||||
|
||||
hardware.deviceTree.name = ftd; # "rockchip/rk3566-soquartz-blade.dtb";
|
||||
|
||||
system.stateVersion = "23.05";
|
||||
}
|
||||
];
|
||||
};
|
||||
in
|
||||
{
|
||||
quartz64a = buildSystem "rockchip/rk3566-quartz64-a.dtb";
|
||||
quartz64b = buildSystem "rockchip/rk3566-quartz64-b.dtb";
|
||||
soquartz-model-a = buildSystem "rockchip/rk3566-soquartz-model-a.dtb";
|
||||
soquartz-cm4 = buildSystem "rockchip/rk3566-soquartz-cm4.dtb";
|
||||
soquartz-blade = buildSystem "rockchip/rk3566-soquartz-blade.dtb";
|
||||
rock64 = buildSystem "rockchip/rk3328-rock64.dtb";
|
||||
rockPro64 = buildSystem "rockchip/rk3399-rockpro64.dtb";
|
||||
rockPro64v2 = buildSystem "rockchip/rk3399-rockpro64-v2.dtb";
|
||||
roc-pc-rk3399 = buildSystem "rockchip/rk3399-roc-pc.dtb";
|
||||
pinebookPro = buildSystem "rockchipo/rk3399-pinebook-pro.dtb";
|
||||
}
|
Loading…
Reference in a new issue