{ config, lib, ... }: let inherit (lib) mkEnableOption mkIf mkMerge; cfg = config.hardware.raspberry-pi."4".overlays; in { options.hardware = { raspberry-pi."4".overlays.audremap.enable = mkEnableOption ''audremap enable ''; }; config = mkMerge [ (mkIf cfg.audremap.enable { hardware.deviceTree.overlays = [ { name = "audremap.overlay"; filter = "*rpi-cm4*"; dtsText = '' /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"; }; }; ''; } ]; }) ]; }