diff --git a/systems/NObangers.nix b/systems/NObangers.nix index 5032eb0..cb02ce3 100644 --- a/systems/NObangers.nix +++ b/systems/NObangers.nix @@ -19,7 +19,7 @@ services.pulseaudio.enable = true; config.hardware.raspberry-pi."4" = { bluetooth.enable = true; - fkms-3d.enable = true; + # fkms-3d.enable = true; }; users.users.tao = { @@ -32,6 +32,80 @@ boot.loader.systemd-boot.enable = false; boot.loader.efi.canTouchEfiVariables = false; + # Configure for modesetting in the device tree + hardware.deviceTree = { + overlays = [ + # Equivalent to: + # https://github.com/raspberrypi/linux/blob/rpi-6.1.y/arch/arm/boot/dts/overlays/cma-overlay.dts + { + name = "rpi4-cma-overlay"; + dtsText = '' + // SPDX-License-Identifier: GPL-2.0 + /dts-v1/; + /plugin/; + + / { + compatible = "brcm,bcm2711"; + + fragment@0 { + target = <&cma>; + __overlay__ { + size = <(512 * 1024 * 1024)>; + }; + }; + }; + ''; + } + # Equivalent to: + # https://github.com/raspberrypi/linux/blob/rpi-6.1.y/arch/arm/boot/dts/overlays/vc4-fkms-v3d-overlay.dts + { + name = "rpi4-vc4-fkms-v3d-overlay"; + dtsText = '' + // SPDX-License-Identifier: GPL-2.0 + /dts-v1/; + /plugin/; + + / { + compatible = "brcm,bcm2711"; + + fragment@1 { + target = <&fb>; + __overlay__ { + status = "disabled"; + }; + }; + + fragment@2 { + target = <&firmwarekms>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@3 { + target = <&v3d>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@4 { + target = <&vc4>; + __overlay__ { + status = "okay"; + }; + }; + }; + ''; + } + ]; + }; + # Also configure the system for modesetting. + services.xserver.videoDrivers = lib.mkBefore [ + "modesetting" # Prefer the modesetting driver in X11 + "fbdev" # Fallback to fbdev + ]; + fileSystems = { "/" = { device = "/dev/disk/by-label/NIXOS_SD";