reformat code

This commit is contained in:
robert jakub
2024-10-19 00:14:47 +02:00
parent 9670876842
commit f0748371bf
28 changed files with 86 additions and 33 deletions

View File

@@ -1,5 +1,5 @@
{pkgs, ...}: let
rpi-utils = pkgs.callPackage ./packages/rpi-utils {};
rpi-utils = pkgs.callPackage ../raspberry-pi/packages/rpi-utils {};
audio-patch = pkgs.writeText "audio_3.5_patch.py" ''
import os
import time

View File

@@ -1,35 +1,37 @@
{
pkgs,
nixos-hardware,
lib,
...
}: let
rpi-utils = pkgs.callPackage ./packages/rpi-utils {};
inherit (lib) mkDefault;
rpi-utils = pkgs.callPackage ../raspberry-pi/packages/rpi-utils {};
in {
imports =
[nixos-hardware.nixosModules.raspberry-pi-4]
++ [./kernel]
++ [./overlays]
++ [./packages/overlays]
++ [./audio-patch.nix];
++ [../raspberry-pi/overlays]
++ [../raspberry-pi/apply-overlays]
++ [./audio.nix];
config = {
environment.systemPackages = [rpi-utils];
hardware.raspberry-pi."4" = {
xhci.enable = false;
dwc2.enable = true;
dwc2.dr_mode = "host";
xhci.enable = mkDefault false;
dwc2.enable = mkDefault true;
dwc2.dr_mode = mkDefault "host";
overlays = {
cpu-revision.enable = true;
audremap.enable = true;
vc4-kms-v3d.enable = true;
disable-pcie.enable = true;
disable-genet.enable = true;
panel-uc.enable = true;
cpi-pmu.enable = true;
cpi-i2c1.enable = false;
cpi-spi4.enable = false;
cpi-bluetooth.enable = true;
cpu-revision.enable = mkDefault true;
audremap.enable = mkDefault true;
vc4-kms-v3d.enable = mkDefault true;
disable-pcie.enable = mkDefault true;
disable-genet.enable = mkDefault true;
panel-uc.enable = mkDefault true;
cpi-pmu.enable = mkDefault true;
cpi-i2c1.enable = mkDefault false;
cpi-spi4.enable = mkDefault false;
cpi-bluetooth.enable = mkDefault true;
};
};
@@ -40,25 +42,25 @@ in {
{
name = "bcm2711-rpi-cm4";
params = {
# ant2 = "on";
audio = "on";
spi = "off";
i2c_arm = "on";
ant2 = mkDefault "off";
audio = mkDefault "on";
spi = mkDefault "off";
i2c_arm = mkDefault "on";
};
}
{
name = "cpu-revision";
params = {cm4-8 = "on";};
params = {cm4-8 = mkDefault "on";};
}
{
name = "audremap";
params = {pins_12_13 = "on";};
params = {pins_12_13 = mkDefault "on";};
}
{
name = "vc4-kms-v3d";
params = {
cma-384 = "on";
nohdmi1 = "on";
cma-384 = mkDefault "on";
nohdmi1 = mkDefault "on";
};
}
];

View File

@@ -1,14 +0,0 @@
{...}: {
imports = [
./dtb-audremap.nix
./dtb-cpu-revision.nix
./dtb-disable-pcie.nix
./dtb-disable-genet.nix
./dtb-panel-uc.nix
./dtb-cpi-pmu.nix
./dtb-cpi-i2c1.nix
./dtb-cpi-bluetooth.nix
./dtb-vc4-kms-v3d.nix
./dtb-cpi-spi4.nix
];
}

View File

@@ -1,28 +0,0 @@
{
config,
lib,
...
}: let
inherit (lib) mkEnableOption mkIf mkMerge mkOption types;
cfg = config.hardware.raspberry-pi."4".overlays.audremap;
in {
options.hardware.raspberry-pi."4".overlays.audremap = {
enable = mkEnableOption ''overlay enable'';
name = mkOption {
type = types.str;
default = "audremap";
};
};
config = mkMerge [
(mkIf cfg.enable {
hardware.deviceTree.overlays = [
{
name = "${cfg.name}";
filter = "bcm2711-rpi-cm4.dtb";
dtsFile = ./source/audremap.dts;
}
];
})
];
}

View File

@@ -1,30 +0,0 @@
{
config,
lib,
...
}: let
inherit (lib) mkEnableOption mkIf mkMerge mkOption types;
cfg = config.hardware.raspberry-pi."4".overlays.cpi-bluetooth;
in {
options.hardware.raspberry-pi."4".overlays.cpi-bluetooth = {
enable = mkEnableOption ''overlay enable'';
name = mkOption {
type = types.str;
default = "cpi-bluetooth";
};
};
config = mkMerge [
(mkIf cfg.enable {
hardware.deviceTree = {
overlays = [
{
name = "${cfg.name}";
filter = "bcm2711-rpi-cm4.dtb";
dtsFile = ./source/cpi-bluetooth.dts;
}
];
};
})
];
}

View File

@@ -1,30 +0,0 @@
{
config,
lib,
...
}: let
inherit (lib) mkEnableOption mkIf mkMerge mkOption types;
cfg = config.hardware.raspberry-pi."4".overlays.cpi-i2c1;
in {
options.hardware.raspberry-pi."4".overlays.cpi-i2c1 = {
enable = mkEnableOption ''overlay enable'';
name = mkOption {
type = types.str;
default = "cpi-i2c1";
};
};
config = mkMerge [
(mkIf cfg.enable {
hardware.deviceTree = {
overlays = [
{
name = "${cfg.name}";
filter = "bcm2711-rpi-cm4.dtb";
dtsFile = ./source/cpi-i2c1.dts;
}
];
};
})
];
}

View File

@@ -1,30 +0,0 @@
{
config,
lib,
...
}: let
inherit (lib) mkEnableOption mkIf mkMerge mkOption types;
cfg = config.hardware.raspberry-pi."4".overlays.cpi-pmu;
in {
options.hardware.raspberry-pi."4".overlays.cpi-pmu = {
enable = mkEnableOption ''overlay enable'';
name = mkOption {
type = types.str;
default = "cpi-pmu";
};
};
config = mkMerge [
(mkIf cfg.enable {
hardware.deviceTree = {
overlays = [
{
name = "${cfg.name}";
filter = "bcm2711-rpi-cm4.dtb";
dtsFile = ./source/cpi-pmu.dts;
}
];
};
})
];
}

View File

@@ -1,30 +0,0 @@
{
config,
lib,
...
}: let
inherit (lib) mkEnableOption mkIf mkMerge mkOption types;
cfg = config.hardware.raspberry-pi."4".overlays.cpi-spi4;
in {
options.hardware.raspberry-pi."4".overlays.cpi-spi4 = {
enable = mkEnableOption ''overlay enable'';
name = mkOption {
type = types.str;
default = "cpi-spi4";
};
};
config = mkMerge [
(mkIf cfg.enable {
hardware.deviceTree = {
overlays = [
{
name = "${cfg.name}";
filter = "bcm2711-rpi-cm4.dtb";
dtsFile = ./source/cpi-spi4.dts;
}
];
};
})
];
}

View File

@@ -1,30 +0,0 @@
{
config,
lib,
...
}: let
inherit (lib) mkEnableOption mkIf mkMerge mkOption types;
cfg = config.hardware.raspberry-pi."4".overlays.cpu-revision;
in {
options.hardware.raspberry-pi."4".overlays.cpu-revision = {
enable = mkEnableOption ''overlay enable'';
name = mkOption {
type = types.str;
default = "cpu-revision";
};
};
config = mkMerge [
(mkIf cfg.enable {
hardware.deviceTree = {
overlays = [
{
name = "${cfg.name}";
filter = "bcm2711-rpi-cm4.dtb";
dtsFile = ./source/cpu-revision.dts;
}
];
};
})
];
}

View File

@@ -1,30 +0,0 @@
{
config,
lib,
...
}: let
inherit (lib) mkEnableOption mkIf mkMerge mkOption types;
cfg = config.hardware.raspberry-pi."4".overlays.disable-genet;
in {
options.hardware.raspberry-pi."4".overlays.disable-genet = {
enable = mkEnableOption ''overlay enable'';
name = mkOption {
type = types.str;
default = "disable-genet";
};
};
config = mkMerge [
(mkIf cfg.enable {
hardware.deviceTree = {
overlays = [
{
name = "${cfg.name}";
filter = "bcm2711-rpi-cm4.dtb";
dtsFile = ./source/disable-genet.dts;
}
];
};
})
];
}

View File

@@ -1,30 +0,0 @@
{
config,
lib,
...
}: let
inherit (lib) mkEnableOption mkIf mkMerge mkOption types;
cfg = config.hardware.raspberry-pi."4".overlays.disable-pcie;
in {
options.hardware.raspberry-pi."4".overlays.disable-pcie = {
enable = mkEnableOption ''overlay enable'';
name = mkOption {
type = types.str;
default = "disable-pcie";
};
};
config = mkMerge [
(mkIf cfg.enable {
hardware.deviceTree = {
overlays = [
{
name = "${cfg.name}";
filter = "bcm2711-rpi-cm4.dtb";
dtsFile = ./source/disable-pcie.dts;
}
];
};
})
];
}

View File

@@ -1,30 +0,0 @@
{
config,
lib,
...
}: let
inherit (lib) mkEnableOption mkIf mkMerge mkOption types;
cfg = config.hardware.raspberry-pi."4".overlays.panel-uc;
in {
options.hardware.raspberry-pi."4".overlays.panel-uc = {
enable = mkEnableOption ''overlay enable'';
name = mkOption {
type = types.str;
default = "panel-uc";
};
};
config = mkMerge [
(mkIf cfg.enable {
hardware.deviceTree = {
overlays = [
{
name = "${cfg.name}";
filter = "bcm2711-rpi-cm4.dtb";
dtsFile = ./source/panel-uc.dts;
}
];
};
})
];
}

View File

@@ -1,30 +0,0 @@
{
config,
lib,
...
}: let
inherit (lib) mkEnableOption mkIf mkMerge mkOption types;
cfg = config.hardware.raspberry-pi."4".overlays.vc4-kms-v3d;
in {
options.hardware.raspberry-pi."4".overlays.vc4-kms-v3d = {
enable = mkEnableOption ''overlay enable'';
name = mkOption {
type = types.str;
default = "vc4-kms-v3d";
};
};
config = mkMerge [
(mkIf cfg.enable {
hardware.deviceTree = {
overlays = [
{
name = "${cfg.name}";
filter = "bcm2711-rpi-cm4.dtb";
dtsFile = ./source/vc4-kms-v3d.dts;
}
];
};
})
];
}

View File

@@ -1,26 +0,0 @@
/dts-v1/;
/plugin/;
/ {
compatible = "brcm,bcm2711";
fragment@0 {
target = <&audio_pins>;
frag0: __overlay__ {
brcm,pins = <12 13>;
brcm,function = <4>; /* alt0 alt0 */
};
};
fragment@1 {
target = <&chosen>;
__overlay__ {
bootargs = "snd_bcm2835.enable_headphones=1";
};
};
__overrides__ {
swap_lr = <&frag0>, "swap_lr?";
enable_jack = <&frag0>, "enable_jack?";
pins_12_13 = <&frag0>,"brcm,pins:0=12", <&frag0>,"brcm,pins:4=13", <&frag0>,"brcm,function:0=4";
pins_18_19 = <&frag0>,"brcm,pins:0=18", <&frag0>,"brcm,pins:4=19", <&frag0>,"brcm,function:0=2";
pins_40_41 = <&frag0>,"brcm,pins:0=40", <&frag0>,"brcm,pins:4=41", <&frag0>,"brcm,function:0=4";
pins_40_45 = <&frag0>,"brcm,pins:0=40", <&frag0>,"brcm,pins:4=45", <&frag0>,"brcm,function:0=4";
};
};

View File

@@ -1,14 +0,0 @@
/dts-v1/;
/plugin/;
/{
compatible = "brcm,bcm2711";
fragment@0 {
target = <&uart0_pins>;
__overlay__ {
brcm,pins = <30 31 32 33>;
brcm,pull = <2 0 0 2>;
};
};
};

View File

@@ -1,34 +0,0 @@
/dts-v1/;
/plugin/;
/{
compatible = "brcm,bcm2711";
fragment@0 {
target = <&i2c1>;
__overlay__ {
#address-cells = <1>;
#size-cells = <0>;
pinctrl-names = "default";
pinctrl-0 = <&i2c1_pins>;
status = "okay";
adc101c: adc@54 {
reg = <0x54>;
compatible = "ti,adc101c";
status = "okay";
};
};
};
fragment@1 {
target = <&gpio>;
__overlay__ {
i2c1_pins: i2c1 {
brcm,pins = <44 45>;
brcm,function = <6>;
};
};
};
};

View File

@@ -1,110 +0,0 @@
/dts-v1/;
/plugin/;
/{
compatible = "brcm,bcm2711";
fragment@0 {
target = <&i2c0if>;
__overlay__ {
#address-cells = <1>;
#size-cells = <0>;
pinctrl-0 = <&i2c0_pins>;
pinctrl-names = "default";
status = "okay";
axp22x: pmic@34 {
interrupt-controller;
#interrupt-cells = <1>;
compatible = "x-powers,axp221";
reg = <0x34>; /* i2c address */
interrupt-parent = <&gpio>;
interrupts = <2 8>; /* IRQ_TYPE_EDGE_FALLING */
irq-gpios = <&gpio 2 0>;
regulators {
x-powers,dcdc-freq = <3000>;
reg_aldo1: aldo1 {
regulator-always-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-name = "audio-vdd";
};
reg_aldo2: aldo2 {
regulator-always-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-name = "display-vcc";
};
reg_dldo2: dldo2 {
regulator-always-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-name = "dldo2";
};
reg_dldo3: dldo3 {
regulator-always-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-name = "dldo3";
};
reg_dldo4: dldo4 {
regulator-always-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-name = "dldo4";
};
};
battery_power_supply: battery-power-supply {
compatible = "x-powers,axp221-battery-power-supply";
monitored-battery = <&battery>;
};
ac_power_supply: ac_power_supply {
compatible = "x-powers,axp221-ac-power-supply";
};
};
};
};
fragment@1 {
target = <&i2c0if>;
__overlay__ {
compatible = "brcm,bcm2708-i2c";
};
};
fragment@2 {
target-path = "/aliases";
__overlay__ {
i2c0 = "/soc/i2c@7e205000";
};
};
fragment@3 {
target-path = "/";
__overlay__ {
battery: battery@0 {
compatible = "simple-battery";
device-chemistry = "lithium-ion";
constant-charge-current-max-microamp = <2100000>;
voltage-max-design-microvolt = <4200000>;
re-charge-voltage-microvolt = <4000000>;
// adjust the following params according to your battery specs
voltage-min-design-microvolt = <3300000>;
energy-full-design-microwatt-hours = <24790000>; // 2x3350mAh * 3.7v
charge-full-design-microamp-hours = <6700000>; // 2x3350mAh
};
};
};
};

View File

@@ -1,41 +0,0 @@
/dts-v1/;
/plugin/;
/{
compatible = "brcm,bcm2711";
fragment@1 {
target = <&spi4>;
__overlay__ {
pinctrl-names = "default";
pinctrl-0 = <&spi4_pins &spi4_cs_pins>;
cs-gpios = <&gpio 4 1>;
status = "okay";
spidev4_0: spidev@0 {
compatible = "spidev";
reg = <0>; /* CE0 */
#address-cells = <1>;
#size-cells = <0>;
spi-max-frequency = <125000000>;
status = "okay";
};
};
};
fragment@2 {
target = <&gpio>;
__overlay__ {
spi4_pins: spi4_pins {
brcm,pins = <6 7>;
brcm,function = <7>;
};
spi4_cs_pins: spi0_cs_pins {
brcm,pins = <4>;
brcm,function = <1>;
};
};
};
};

View File

@@ -1,20 +0,0 @@
/dts-v1/;
/plugin/;
/{
compatible = "brcm,bcm2711";
fragment@0 {
target-path = "/";
__overlay__ {
frag0: system {
linux,revision = <0x00d03114>;
};
};
};
__overrides__ {
pi4 = <&frag0>,"linux,revision:0=",<0x00d03114>;
cm4-8 = <&frag0>,"linux,revision:0=",<0x00d03140>;
};
};

View File

@@ -1,13 +0,0 @@
/dts-v1/;
/plugin/;
/{
compatible = "brcm,bcm2711";
fragment@0 {
target = <&genet>;
__overlay__ {
status = "disabled";
};
};
};

View File

@@ -1,13 +0,0 @@
/dts-v1/;
/plugin/;
/{
compatible = "brcm,bcm2711";
fragment@0 {
target = <&pcie0>;
__overlay__ {
status = "disabled";
};
};
};

View File

@@ -1,47 +0,0 @@
/dts-v1/;
/plugin/;
/{
compatible = "brcm,bcm2711";
fragment@0 {
target=<&dsi1>;
__overlay__ {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
port {
dsi_out_port: endpoint {
remote-endpoint = <&panel_dsi_port>;
};
};
panel_cwu50: panel@0 {
compatible = "cw,cwu50";
reg = <0>;
reset-gpio = <&gpio 8 1>;
backlight = <&ocp8178_backlight>;
rotation = <90>;
port {
panel_dsi_port: endpoint {
remote-endpoint = <&dsi_out_port>;
};
};
};
};
};
fragment@1 {
target-path = "/";
__overlay__ {
ocp8178_backlight: backlight@0 {
compatible = "ocp8178-backlight";
backlight-control-gpios = <&gpio 9 0>;
default-brightness = <5>;
};
};
};
};

View File

@@ -1,217 +0,0 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/bcm2835.h>
&frag0 {
size = <((512-4)*1024*1024)>;
};
/{
compatible = "brcm,bcm2711";
fragment@0 {
target = <&cma>;
frag0: __overlay__ {
/*
* The default size when using this overlay is 256 MB
* and should be kept as is for backwards
* compatibility.
*/
size = <0x10000000>;
};
};
fragment@1 {
target = <&ddc0>;
__overlay__ {
status = "okay";
};
};
fragment@2 {
target = <&ddc1>;
__overlay__ {
status = "okay";
};
};
fragment@3 {
target = <&hdmi0>;
__overlay__ {
status = "okay";
};
};
fragment@4 {
target = <&hdmi1>;
__overlay__ {
status = "okay";
};
};
fragment@5 {
target = <&hvs>;
__overlay__ {
status = "okay";
};
};
fragment@6 {
target = <&pixelvalve0>;
__overlay__ {
status = "okay";
};
};
fragment@7 {
target = <&pixelvalve1>;
__overlay__ {
status = "okay";
};
};
fragment@8 {
target = <&pixelvalve2>;
__overlay__ {
status = "okay";
};
};
fragment@9 {
target = <&pixelvalve3>;
__overlay__ {
status = "okay";
};
};
fragment@10 {
target = <&pixelvalve4>;
__overlay__ {
status = "okay";
};
};
fragment@11 {
target = <&v3d>;
__overlay__ {
status = "okay";
};
};
fragment@12 {
target = <&vc4>;
__overlay__ {
status = "okay";
};
};
fragment@13 {
target = <&txp>;
__overlay__ {
status = "okay";
};
};
fragment@14 {
target = <&fb>;
__overlay__ {
status = "disabled";
};
};
fragment@15 {
target = <&firmwarekms>;
__overlay__ {
status = "disabled";
};
};
fragment@16 {
target = <&vec>;
__overlay__ {
status = "disabled";
};
};
fragment@17 {
target = <&hdmi0>;
__dormant__ {
dmas;
};
};
fragment@18 {
target = <&hdmi1>;
__dormant__ {
dmas;
};
};
fragment@19 {
target-path = "/chosen";
__overlay__ {
bootargs = "snd_bcm2835.enable_hdmi=0";
};
};
fragment@20 {
target = <&dvp>;
__overlay__ {
status = "okay";
};
};
fragment@21 {
target = <&pixelvalve3>;
__dormant__ {
status = "okay";
};
};
fragment@22 {
target = <&vec>;
__dormant__ {
status = "okay";
};
};
fragment@23 {
target = <&aon_intr>;
__overlay__ {
status = "okay";
};
};
__overrides__ {
audio = <0>,"!17";
audio1 = <0>,"!18";
noaudio = <0>,"=17", <0>,"=18";
composite = <0>, "!1",
<0>, "!2",
<0>, "!3",
<0>, "!4",
<0>, "!6",
<0>, "!7",
<0>, "!8",
<0>, "!9",
<0>, "!10",
<0>, "!16",
<0>, "=21",
<0>, "=22";
nohdmi0 = <0>, "-1-3-8";
nohdmi1 = <0>, "-2-4-10";
nohdmi = <0>, "-1-2-3-4-8-10";
cma-512 = <&frag0>,"size:0=",<0x20000000>;
cma-448 = <&frag0>,"size:0=",<0x1c000000>;
cma-384 = <&frag0>,"size:0=",<0x18000000>;
cma-320 = <&frag0>,"size:0=",<0x14000000>;
cma-256 = <&frag0>,"size:0=",<0x10000000>;
cma-192 = <&frag0>,"size:0=",<0xC000000>;
cma-128 = <&frag0>,"size:0=",<0x8000000>;
cma-96 = <&frag0>,"size:0=",<0x6000000>;
cma-64 = <&frag0>,"size:0=",<0x4000000>;
cma-size = <&frag0>,"size:0"; /* in bytes, 4MB aligned */
cma-default = <0>,"-0";
};
};

View File

@@ -1,64 +0,0 @@
paramsPerOverlayMap: {
lib,
stdenvNoCC,
dtc,
libraspberrypi,
}:
with lib; (base: overlays':
stdenvNoCC.mkDerivation {
name = "device-tree-overlays";
nativeBuildInputs = [dtc libraspberrypi];
buildCommand = let
overlays = toList overlays';
in ''
mkdir -p $out
cd "${base}"
find . -type f -name '*.dtb' -print0 \
| xargs -0 cp -v --no-preserve=mode --target-directory "$out" --parents
for dtb in $(find "$out" -type f -name '*.dtb'); do
echo -n "Applying params to $(basename "$dtb")... "
echo ${concatStringsSep " " (mapAttrsToList (name: value: "${name}=${value}") (paramsPerOverlayMap.bcm2711-rpi-cm4 or {}))}
mv "$dtb"{,.in}
dtmerge "$dtb.in" "$dtb" - ${concatStringsSep " " (mapAttrsToList (name: value: "${name}=${value}") (paramsPerOverlayMap.bcm2711-rpi-cm4 or {}))}
rm "$dtb.in"
dtbCompat=$(fdtget -t s "$dtb" / compatible 2>/dev/null || true)
# skip files without `compatible` string
test -z "$dtbCompat" && continue
${flip (concatMapStringsSep "\n") overlays (o: ''
overlayCompat="$(fdtget -t s "${o.dtboFile}" / compatible)"
# skip incompatible and non-matching overlays
if [[ ! "$dtbCompat" =~ "$overlayCompat" ]]; then
echo "Skipping overlay ${o.name}: incompatible with $(basename "$dtb")"
elif ${
if ((o.filter or null) == null)
then "false"
else ''
[[ "''${dtb//${o.filter}/}" == "$dtb" ]]
''
}
then
echo "Skipping overlay ${o.name}: filter does not match $(basename "$dtb")"
else
echo -n "Applying overlay ${o.name} to $(basename "$dtb")... "
mv "$dtb"{,.in}
# dtmerge requires a .dtbo ext for dtbo files, otherwise it adds it to the given file implicitly
dtboWithExt="$TMPDIR/$(basename "${o.dtboFile}").dtbo"
cp -r ${o.dtboFile} "$dtboWithExt"
echo -n ${concatStringsSep " " (mapAttrsToList (name: value: "${name}=${value}") (paramsPerOverlayMap.${o.name} or {}))} " "
dtmerge "$dtb.in" "$dtb" "$dtboWithExt" ${concatStringsSep " " (mapAttrsToList (name: value: "${name}=${value}") (paramsPerOverlayMap.${o.name} or {}))}
echo "ok"
rm "$dtb.in" "$dtboWithExt"
fi
'')}
done'';
})

View File

@@ -1,51 +0,0 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
overlayParamsType = types.submodule {
options = {
name = mkOption {
type = types.str;
description = lib.mdDoc ''
Name of an overlay for which params are going to be passed to dtmerge.
'';
};
params = mkOption {
type = types.attrsOf types.str;
description = lib.mdDoc ''
Params to pass to dtmerge.
'';
};
};
};
paramsPerOverlayMap =
builtins.mapAttrs
(_: value: builtins.foldl' (a: b: a // b) {} (builtins.catAttrs "params" value))
(builtins.groupBy (x: x.name) config.hardware.deviceTree.overlaysParams);
dtmergeOverlay = _final: prev: {
deviceTree =
prev.deviceTree
// {
applyOverlays = _final.callPackage ((import ./apply-overlays-dtmerge.nix) paramsPerOverlayMap) {};
};
};
in {
options = {
hardware.deviceTree.overlaysParams = mkOption {
default = [];
type = types.listOf overlayParamsType;
};
};
config = {
nixpkgs.overlays = [
dtmergeOverlay
];
};
}

View File

@@ -1,41 +0,0 @@
{
lib,
stdenv,
gcc,
fetchFromGitHub,
cmake,
dtc,
...
}: let
pname = "rpi-utils";
version = "current-20241010";
src = fetchFromGitHub {
owner = "raspberrypi";
repo = "utils";
rev = "371ae96ff6d8b869d4125137fdc73b86fe154245";
hash = "sha256-qYpfy3PtPXzzunKsKSgsQXRUALQz6FSCsHQLe7djSt0=";
};
in
stdenv.mkDerivation rec {
inherit pname version src;
nativeBuildInputs = [gcc cmake];
buildInputs = [dtc];
makeFlags = [
"prefix=${placeholder "out"}"
];
installPhase = ''
runHook preInstall
mkdir -p $out/bin
install -m755 ./pinctrl/pinctrl $out/bin/pinctrl
runHook postInstall
'';
meta = with lib; {
homepage = "https://github.com/raspberrypi/utils";
description = "A collection of scripts and simple applications for Raspberry PI";
license = licenses.bsd3;
platforms = ["aarch64-linux"];
};
}