mirror of
https://github.com/NixOS/nixos-hardware.git
synced 2025-11-09 12:06:09 +01:00
radxa/rock-4c-plus: init
This commit is contained in:
parent
52047449bf
commit
68cc7a876b
6 changed files with 161 additions and 0 deletions
|
|
@ -343,6 +343,7 @@ See code for all available configurations.
|
||||||
| [Purism Librem 13v3](purism/librem/13v3) | `<nixos-hardware/purism/librem/13v3>` |
|
| [Purism Librem 13v3](purism/librem/13v3) | `<nixos-hardware/purism/librem/13v3>` |
|
||||||
| [Purism Librem 15v3](purism/librem/13v3) | `<nixos-hardware/purism/librem/15v3>` |
|
| [Purism Librem 15v3](purism/librem/13v3) | `<nixos-hardware/purism/librem/15v3>` |
|
||||||
| [Purism Librem 5r4](purism/librem/5r4) | `<nixos-hardware/purism/librem/5r4>` |
|
| [Purism Librem 5r4](purism/librem/5r4) | `<nixos-hardware/purism/librem/5r4>` |
|
||||||
|
| [Radxa ROCK 4C+](radxa/rock-4c-plus) | `<nixos-hardware/radxa/rock-4c-plus>` |
|
||||||
| [Raspberry Pi 2](raspberry-pi/2) | `<nixos-hardware/raspberry-pi/2>` |
|
| [Raspberry Pi 2](raspberry-pi/2) | `<nixos-hardware/raspberry-pi/2>` |
|
||||||
| [Raspberry Pi 3](raspberry-pi/3) | `<nixos-hardware/raspberry-pi/3>` |
|
| [Raspberry Pi 3](raspberry-pi/3) | `<nixos-hardware/raspberry-pi/3>` |
|
||||||
| [Raspberry Pi 4](raspberry-pi/4) | `<nixos-hardware/raspberry-pi/4>` |
|
| [Raspberry Pi 4](raspberry-pi/4) | `<nixos-hardware/raspberry-pi/4>` |
|
||||||
|
|
|
||||||
|
|
@ -295,6 +295,7 @@
|
||||||
raspberry-pi-3 = import ./raspberry-pi/3;
|
raspberry-pi-3 = import ./raspberry-pi/3;
|
||||||
raspberry-pi-4 = import ./raspberry-pi/4;
|
raspberry-pi-4 = import ./raspberry-pi/4;
|
||||||
raspberry-pi-5 = import ./raspberry-pi/5;
|
raspberry-pi-5 = import ./raspberry-pi/5;
|
||||||
|
rock-4c-plus = import ./radxa/rock-4c-plus;
|
||||||
kobol-helios4 = import ./kobol/helios4;
|
kobol-helios4 = import ./kobol/helios4;
|
||||||
samsung-np900x3c = import ./samsung/np900x3c;
|
samsung-np900x3c = import ./samsung/np900x3c;
|
||||||
slimbook-hero-rpl-rtx = import ./slimbook/hero/rpl-rtx;
|
slimbook-hero-rpl-rtx = import ./slimbook/hero/rpl-rtx;
|
||||||
|
|
|
||||||
94
radxa/README.md
Normal file
94
radxa/README.md
Normal file
|
|
@ -0,0 +1,94 @@
|
||||||
|
# NixOS support for Radxa devices
|
||||||
|
|
||||||
|
Radxa provides the NixOS implementation in the form of `nixos-hardware` modules
|
||||||
|
for advanced users.
|
||||||
|
|
||||||
|
Our goals are:
|
||||||
|
|
||||||
|
* Only use `nixpkgs` provided packages.
|
||||||
|
* Provide a consistent and simple experience to use our NixOS module.
|
||||||
|
* Targetted audiences are advanced users who care mostly about CPU compute, storage, and network.
|
||||||
|
* No support guarantee. We are not here to teach people how to use NixOS.
|
||||||
|
|
||||||
|
We explicitly want to avoid packaging the entire vendor SDK bootloader and kernel
|
||||||
|
in Nix. Those are not going to be accepted in `nixpkgs`, and our targetted audiences
|
||||||
|
like homelabbers generally ignore the additional hardware features.
|
||||||
|
|
||||||
|
This also aligns with [NixOS on ARM](https://wiki.nixos.org/wiki/NixOS_on_ARM)'s
|
||||||
|
definition of "support":
|
||||||
|
|
||||||
|
> Support for those board assumes as much is supported as Mainline Linux supports.
|
||||||
|
|
||||||
|
## Characteristic of the default profiles
|
||||||
|
|
||||||
|
* Using `linuxPackages_latest`
|
||||||
|
* `bcachefs` rootfs with zstd compression and password-less encryption enabled
|
||||||
|
* EFI boot chain provided by `systemd-boot`
|
||||||
|
* Default serial console enabled with baud rate matches the platform firmware
|
||||||
|
* No automatic partition expansion, as the module is only focusing on hardware
|
||||||
|
|
||||||
|
## Common Nix flake pattern
|
||||||
|
|
||||||
|
Below is an annoated flake example to create the initial boot image.
|
||||||
|
|
||||||
|
```
|
||||||
|
{
|
||||||
|
description = "Example NixOS configurations for Radxa product";
|
||||||
|
# To build, run `nix build .#nixosConfigurations.radxa.config.system.build.diskoImages`
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
disko.url = "github:nix-community/disko";
|
||||||
|
disko.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
nixos-hardware.url = "github:NixOS/nixos-hardware";
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11";
|
||||||
|
nixpkgs-unfree.url = "github:numtide/nixpkgs-unfree/nixos-unstable";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = inputs@{
|
||||||
|
self,
|
||||||
|
disko,
|
||||||
|
nixos-hardware,
|
||||||
|
nixpkgs,
|
||||||
|
nixpkgs-unfree,
|
||||||
|
}: {
|
||||||
|
nixosConfigurations = {
|
||||||
|
radxa = nixpkgs.lib.nixosSystem {
|
||||||
|
specialArgs = { inherit inputs; };
|
||||||
|
system = "aarch64-linux";
|
||||||
|
modules = [
|
||||||
|
nixos-hardware.nixosModules.rock-4c-plus # Update the system according to your device.
|
||||||
|
disko.nixosModules.disko # disko usage is optional in the running system, but we need it to generate the initial boot image.
|
||||||
|
"${nixos-hardware}/radxa/disko.nix" # Common Radxa Disko profile. it is system-agnostic.
|
||||||
|
{
|
||||||
|
disko = {
|
||||||
|
imageBuilder = {
|
||||||
|
# Avoid double emulation to significantly speed up image building process.
|
||||||
|
# Update the system according to your host system.
|
||||||
|
# See https://github.com/nix-community/disko/issues/856
|
||||||
|
qemu = nixpkgs.legacyPackages.x86_64-linux.qemu + "/bin/qemu-system-aarch64 -M virt -cpu cortex-a57";
|
||||||
|
};
|
||||||
|
# Default image size is 2G for a small basic CLI system.
|
||||||
|
# devices.disk.main.imageSize = "2G";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Override the default bootloader with a cross built one.
|
||||||
|
# Use this if you do not have binfmt configured on your system.
|
||||||
|
# For NixOS, please add `boot.binfmt.emulatedSystems = [ "aarch64-linux" ];` to your system configuration.
|
||||||
|
# Update the system and the firmware package according to your device.
|
||||||
|
# hardware.radxa.rock-4c-plus.platformFirmware = nixpkgs-unfree.legacyPackages.x86_64-linux.pkgsCross.aarch64-multiplatform.ubootRock4CPlus;
|
||||||
|
|
||||||
|
users.users.radxa = {
|
||||||
|
isNormalUser = true;
|
||||||
|
initialPassword = "radxa";
|
||||||
|
extraGroups = [ "wheel" ];
|
||||||
|
};
|
||||||
|
services.openssh.enable = true;
|
||||||
|
networking.hostName = "radxa";
|
||||||
|
system.stateVersion = "24.11";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
22
radxa/default.nix
Normal file
22
radxa/default.nix
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
{ lib
|
||||||
|
, pkgs
|
||||||
|
, config
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.hardware.radxa;
|
||||||
|
in {
|
||||||
|
options.hardware.radxa = {
|
||||||
|
enable = lib.mkEnableOption "Radxa system support";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
boot = {
|
||||||
|
# Currently enable bcachefs automatically set
|
||||||
|
# kernelPackages = lib.mkDefault pkgs.linuxPackages_latest;
|
||||||
|
kernelPackages = lib.mkOverride 990 pkgs.linuxPackages_latest;
|
||||||
|
supportedFilesystems = [ "bcachefs" ];
|
||||||
|
loader.systemd-boot.enable = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
12
radxa/disko.nix
Normal file
12
radxa/disko.nix
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
{ lib
|
||||||
|
, pkgs
|
||||||
|
, config
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.hardware.radxa;
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
../rockchip/disko.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
31
radxa/rock-4c-plus/default.nix
Normal file
31
radxa/rock-4c-plus/default.nix
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
{ lib
|
||||||
|
, pkgs
|
||||||
|
, config
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.hardware.radxa.rock-4c-plus;
|
||||||
|
rkCfg = config.hardware.rockchip;
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
../.
|
||||||
|
../../rockchip/rk3399
|
||||||
|
];
|
||||||
|
|
||||||
|
options.hardware.radxa.rock-4c-plus = {
|
||||||
|
platformFirmware = lib.mkPackageOption pkgs "ubootRock4CPlus" { };
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
hardware = {
|
||||||
|
radxa.enable = true;
|
||||||
|
rockchip = {
|
||||||
|
rk3399.enable = true;
|
||||||
|
diskoExtraPostVM = ''
|
||||||
|
dd conv=notrunc,fsync if=${cfg.platformFirmware}/idbloader.img of=$out/${rkCfg.diskoImageName} bs=512 seek=64
|
||||||
|
dd conv=notrunc,fsync if=${cfg.platformFirmware}/u-boot.itb of=$out/${rkCfg.diskoImageName} bs=512 seek=16384
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue