155 lines
5.4 KiB
Nix
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);
|
|
});
|
|
}
|