rockchip/rk3399: init

This commit is contained in:
ZHANG Yuntian
2025-01-20 20:59:44 +08:00
committed by mergify[bot]
parent c5666d9cd6
commit 52047449bf
4 changed files with 129 additions and 0 deletions

33
rockchip/default.nix Normal file
View File

@@ -0,0 +1,33 @@
{ lib
, pkgs
, config
, ...
}:
let
cfg = config.hardware.rockchip;
in {
options.hardware.rockchip = {
enable = lib.mkEnableOption "Rockchip SoC support";
diskoImageName = lib.mkOption {
type = lib.types.str;
default = "main.raw";
description = ''
The output image name for Disko.
Can be used by diskoExtraPostVM.
'';
};
diskoExtraPostVM = lib.mkOption {
type = lib.types.str;
description = ''
The post VM hook for Disko's Image Builder.
Can be used to install platform firmware like U-Boot.
'';
};
};
config = lib.mkIf cfg.enable {
boot = {
kernelParams = [ "console=ttyS2,1500000n8" ];
};
};
}

62
rockchip/disko.nix Normal file
View File

@@ -0,0 +1,62 @@
{ lib
, pkgs
, config
, ...
}:
let
cfg = config.hardware.rockchip;
in {
imports = [
rk3399/disko.nix
];
config = lib.mkIf cfg.enable {
disko = {
imageBuilder = {
extraRootModules = [ "bcachefs" ];
extraPostVM = cfg.diskoExtraPostVM;
};
memSize = lib.mkDefault 4096; # Default 1024 MB will throw "Cannot allocate memory" error
devices.disk.main = {
type = "disk";
imageSize = lib.mkDefault "2G";
content = {
type = "gpt";
partitions = {
ESP = {
type = "EF00";
# Firmware backoff
start = "16M";
size = "500M";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [ "umask=0022" ];
};
};
root = {
size = "100%";
content = {
type = "filesystem";
format = "bcachefs";
mountpoint = "/";
extraArgs = [
"--metadata_checksum=xxhash"
"--data_checksum=xxhash"
"--compression=zstd"
"--background_compression=zstd"
"--str_hash=siphash"
"--wide_macs"
"--encrypted"
"--no_passphrase"
"--discard"
];
};
};
};
};
};
};
};
}

View File

@@ -0,0 +1,20 @@
{ lib
, pkgs
, config
, ...
}:
let
cfg = config.hardware.rockchip.rk3399;
in {
imports = [
../.
];
options.hardware.rockchip.rk3399 = {
enable = lib.mkEnableOption "Rockchip RK3399 support";
};
config = lib.mkIf cfg.enable {
hardware.rockchip.enable = true;
};
}

14
rockchip/rk3399/disko.nix Normal file
View File

@@ -0,0 +1,14 @@
{ lib
, pkgs
, config
, ...
}:
let
cfg = config.hardware.rockchip.rk3399;
in {
config = lib.mkIf cfg.enable {
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
"arm-trusted-firmware-rk3399"
];
};
}