diff --git a/flake.nix b/flake.nix index c8966ff..85db420 100644 --- a/flake.nix +++ b/flake.nix @@ -213,10 +213,10 @@ pi4 = { modules = with inputs; [ disko.nixosModules.disko - nixos-raspberrypi.nixosModules.raspberry-pi-4.base - nixos-raspberrypi.nixosModules.raspberry-pi-4.display-vc4 - nixos-raspberrypi.nixosModules.nixpkgs-rpi - nixos-raspberrypi.nixosModules.trusted-nix-caches + # nixos-raspberrypi.nixosModules.raspberry-pi-4.base + # nixos-raspberrypi.nixosModules.raspberry-pi-4.display-vc4 + # nixos-raspberrypi.nixosModules.nixpkgs-rpi + # nixos-raspberrypi.nixosModules.trusted-nix-caches # nixos-raspberrypi.lib.inject-overlays # nixos-raspberrypi.lib.inject-overlays-global ]; diff --git a/modules/nixos/hardware/raspberry-pi/default.nix b/modules/nixos/hardware/raspberry-pi/default.nix index 4f66fb6..712031e 100644 --- a/modules/nixos/hardware/raspberry-pi/default.nix +++ b/modules/nixos/hardware/raspberry-pi/default.nix @@ -68,7 +68,7 @@ let }; ubootBuilder = import ./uboot-builder.nix { inherit pkgs; - ubootPackage = pkgs.${namespace}.uboot-pi5; + ubootPackage = (if (cfg.variant == "5") then pkgs.${namespace}.uboot-pi5 else pkgs.${namespace}.uboot-pi4); firmwareBuilder = firmwarePopulateCmd; extlinuxConfBuilder = config.boot.loader.generic-extlinux-compatible.populateCmd; }; @@ -93,7 +93,7 @@ let populateUbootBuilder = import ./uboot-builder.nix { inherit ubootBinName; pkgs = pkgs.buildPackages; - ubootPackage = pkgs.${namespace}.uboot-pi5; + ubootPackage = (if (cfg.variant == "5") then pkgs.${namespace}.uboot-pi5 else pkgs.${namespace}.uboot-pi4); firmwareBuilder = firmwarePopulateCmd; extlinuxConfBuilder = config.boot.loader.generic-extlinux-compatible.populateCmd; }; @@ -167,7 +167,7 @@ in loader = { generic-extlinux-compatible = { enable = lib.mkDefault true; - useGenerationDeviceTree = true; + useGenerationDeviceTree = lib.mkOverride 60 true; }; grub.enable = lib.mkForce false; }; @@ -214,7 +214,7 @@ in /plugin/; / { - compatible = "raspberrypi,4-model-b"; + compatible = "brcm,bcm2711"; fragment@0 { target-path = "/"; @@ -227,24 +227,24 @@ in }; ''; } - { - name = "enable-xhci"; - dtsText = '' - /dts-v1/; - /plugin/; + # { + # name = "enable-xhci"; + # dtsText = '' + # /dts-v1/; + # /plugin/; - / { - compatible = "brcm,bcm2711"; - fragment@0 { - //target-path = "/scb/xhci@7e9c0000"; - target = <&xhci>; - __overlay__ { - status = "okay"; - }; - }; - }; - ''; - } + # / { + # compatible = "brcm,bcm2711"; + # fragment@0 { + # //target-path = "/scb/xhci@7e9c0000"; + # target = <&xhci>; + # __overlay__ { + # status = "okay"; + # }; + # }; + # }; + # ''; + # } ] else [ { diff --git a/modules/nixos/hardware/raspberry-pi/firmware-builder.sh b/modules/nixos/hardware/raspberry-pi/firmware-builder.sh index 5747ff2..31cdd29 100644 --- a/modules/nixos/hardware/raspberry-pi/firmware-builder.sh +++ b/modules/nixos/hardware/raspberry-pi/firmware-builder.sh @@ -39,7 +39,7 @@ dtb_path=$SRC_FIRMWARE_DIR echo "copying firmware..." # Device Tree - +useVendorDeviceTree=1 if [ -n "$useVendorDeviceTree" ]; then echo -n "using vendor firmware from " dtb_path=$SRC_FIRMWARE_DIR @@ -50,6 +50,7 @@ fi echo $dtb_path DTBS=("$dtb_path"/*.dtb) +echo "dtbs all: $DTBS" for dtb in "${DTBS[@]}"; do # for dtb in $dtb_path/broadcom/*.dtb; do dst="$target/$(basename $dtb)" diff --git a/modules/nixos/hardware/raspberry-pi/generational/install-device-tree.sh b/modules/nixos/hardware/raspberry-pi/generational/install-device-tree.sh index 9a76e2c..d3d46b0 100644 --- a/modules/nixos/hardware/raspberry-pi/generational/install-device-tree.sh +++ b/modules/nixos/hardware/raspberry-pi/generational/install-device-tree.sh @@ -53,8 +53,10 @@ echo "$dtb_path" # firmware package has dtbs in its root, # dtbs built with kernel are in broadcom/ DTBS=("$dtb_path"/*.dtb "$dtb_path"/broadcom/*.dtb) +echo "all dtbs: $DTBS" for dtb in "${DTBS[@]}"; do dst="$target/$(basename "$dtb")" + echo "$dtb" copyForced "$dtb" "$dst" filesCopied[$dst]=1 done diff --git a/overlays/linux-cachyos/default.nix b/overlays/linux-cachyos/default.nix index bb49b62..08d4278 100644 --- a/overlays/linux-cachyos/default.nix +++ b/overlays/linux-cachyos/default.nix @@ -36,5 +36,6 @@ in linuxPackages_cachyos-rc-lto-znver4 = cachyosPackages.cachyos-rc-lto-znver4; uboot-pi5 = ubootPackages.ubootRaspberryPi5; + uboot-pi4 = ubootPackages.ubootRaspberryPi4; }; } diff --git a/systems/aarch64-linux/pi4/boot.nix b/systems/aarch64-linux/pi4/boot.nix index 40c7a4c..21c4689 100755 --- a/systems/aarch64-linux/pi4/boot.nix +++ b/systems/aarch64-linux/pi4/boot.nix @@ -1,22 +1,24 @@ { pkgs, lib, + namespace, ... }: let - kernelBundle = pkgs.linuxAndFirmware.latest; + # kernelBundle = pkgs.linuxAndFirmware.latest; in { boot = { - loader.raspberry-pi = { - firmwarePackage = kernelBundle.raspberrypifw; - variant = "4"; - }; - kernelPackages = kernelBundle.linuxPackages_rpi4; + # loader.raspberry-pi = { + # firmwarePackage = kernelBundle.raspberrypifw; + # variant = "4"; + # }; + # kernelPackages = kernelBundle.linuxPackages_rpi4; + kernelPackages = pkgs.${namespace}.linuxPackages_rpi4; supportedFilesystems = lib.mkForce [ ]; }; - hardware.raspberry-pi.config = { + ${namespace}.hardware.raspberry-pi.config = { all = { # [all] conditional filter, https://www.raspberrypi.com/documentation/computers/config_txt.html#conditional-filters