sd-images/flake.nix
2023-07-24 16:05:42 -05:00

155 lines
5.4 KiB
Nix

{
description = "A very basic flake";
# pin this to unstable
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-23.05";
nixpkgsUnstable.url = "github:nixos/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
rockchip = {
url = "github:asonix/nixos-rockchip/asonix/pinetab2-linux-6.4.3";
inputs.nixpkgsStable.follows = "nixpkgs";
inputs.nixpkgsUnstable.follows = "nixpkgsUnstable";
inputs.utils.follows = "flake-utils";
};
};
outputs = { self, nixpkgs, nixpkgsUnstable, flake-utils, rockchip }@inputs:
let
asonix-key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD3+mNUlokSKZQNXJAuGm2LCHelKuElWLJArzIYZQYEPbrFaE+J8VtfNbMMD1qVI21ksfcqvFQW4aiP4+BFDxTOGW0uBmUHWKxkyyU39y2yhnsa+svwwIooc+Iwkxw0atzSMEBb94UaZlq9cKMSnG9RGeRFqfYnW2s49wpU79wk6zEFUuOHCMKn4R7zqkPac7IyjxZeKlspY3fOasNH4zyrkbhEOlvrwEOdRNTRNCWWzDcinIVZjfmErHlSynshx9yLnCGkLBxHSxgI2TVyR3RlQ3aGbHtB3QN5X7/T/dwXJFJ11P1Q2bC3XP3hHCogDqXcPvDTFSQEM/mZuFcKNbsn asonix@asonix-tower";
firestarPublicKey = "firestar:spmMw07mO3cxflq5g2GazhE7ddgEoz6QLwaiCnyz/fg=";
customized = { uBoot, fdt, kernel }: ({ lib, ... }: {
nixpkgs.overlays = [
(final: super: {
zfs = super.zfs.overrideAttrs (_: {
meta.platforms = [ ];
});
})
];
rockchip.uBoot = uBoot;
hardware.deviceTree.name = fdt;
boot.kernelPackages = kernel;
boot.kernelParams = [ "console=ttyS2,1500000n8" "rootwait" "root=LABEL=NIXOS_SD" "rw" ];
system.stateVersion = "23.11";
users.users.asonix = {
isNormalUser = true;
description = "Tavi";
extraGroups = [ "wheel" ];
openssh.authorizedKeys.keys = [ asonix-key ];
initialPassword = "changeme";
};
# Nix config
nix.settings.trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
firestarPublicKey
];
services.openssh = {
enable = true;
settings.PermitRootLogin = lib.mkForce "prohibit-password";
};
});
buildModules = ({ uBoot, fdt, kernel, extraModules ? [] }: extraModules ++ [
rockchip.nixosModules.sdImageRockchip
rockchip.nixosModules.dtOverlayPCIeFix
(customized { inherit uBoot fdt kernel; })
]);
osConfig = (modules: nixpkgsUnstable.lib.nixosSystem {
system = "aarch64-linux";
inherit modules;
specialArgs = {
inherit inputs;
};
});
pkgs = system: import nixpkgsUnstable {
inherit system;
crossSystem.system = "aarch64-linux";
config.allowUnfree = true;
};
boards = system: [
{
board = "Quartz64A";
uBoot = (rockchip.uBoot system).uBootQuartz64A;
fdt = "rockchip/rk3566-quartz64-a.dtb";
kernel = (rockchip.kernel system).linux_6_4_rockchip;
}
{
board = "Quartz64B";
uBoot = (rockchip.uBoot system).uBootQuartz64B;
fdt = "rockchip/rk3566-quartz64-b.dtb";
kernel = (rockchip.kernel system).linux_6_4_rockchip;
}
{
board = "PineTab2";
uBoot = (rockchip.uBoot system).uBootPineTab2;
fdt = "rockchip/rk3566-pinetab2-v2.0.dtb";
kernel = (rockchip.kernel system).linux_6_4_pinetab;
}
{
board = "SoQuartzBlade";
uBoot = (rockchip.uBoot system).uBootSoQuartzBlade;
fdt = "rockchip/rk3566-soquartz-blade.dtb";
kernel = (rockchip.kernel system).linux_6_4_rockchip;
}
{
board = "SoQuartzCM4IO";
uBoot = (rockchip.uBoot system).uBootSoQuartzCM4IO;
fdt = "rockchip/rk3566-soquartz-cm4.dtb";
kernel = (rockchip.kernel system).linux_6_4_rockchip;
}
{
board = "SoQuartzModelA";
uBoot = (rockchip.uBoot system).uBootSoQuartzModelA;
fdt = "rockchip/rk3566-soquartz-model-a.dtb";
kernel = (rockchip.kernel system).linux_6_4_rockchip;
}
{
board = "Rock64";
uBoot = (pkgs system).ubootRock64;
fdt = "rockchip/rk3328-rock64.dtb";
kernel = (rockchip.kernel system).linux_6_4_rockchip;
}
{
board = "RockPro64";
uBoot = (pkgs system).ubootRockPro64;
fdt = "rockchip/rk3399-rockpro64.dtb";
kernel = (rockchip.kernel system).linux_6_4_rockchip;
}
{
board = "RockPro64v2";
uBoot = (pkgs system).ubootRockPro64;
fdt = "rockchip/rk3399-rockpro64-v2.dtb";
kernel = (rockchip.kernel system).linux_6_4_rockchip;
}
{
board = "PinebookPro";
uBoot = (pkgs system).ubootPinebookPro;
fdt = "rockchipo/rk3399-pinebook-pro.dtb";
kernel = (rockchip.kernel system).linux_6_4_rockchip;
}
];
in
flake-utils.lib.eachDefaultSystem (system: {
packages =
builtins.foldl'
(acc: { board, uBoot, fdt, kernel, extraModules ? [] }:
acc // {
"${board}" = rec {
modules = buildModules { inherit uBoot fdt kernel extraModules; };
image = (osConfig modules).config.system.build.sdImage;
linux = kernel.kernel;
};
})
{ }
(boards system);
});
}