{
  lib,
  config,
  ...
}: let
  cfg = config.marleyos.programs.cava;
in {
  options.marleyos.programs.cava.enable = lib.mkEnableOption "cava";

  config = lib.mkIf cfg.enable {
    programs.cava = {
      # FIX: Re-enable once https://github.com/NixOS/nixpkgs/pull/355948 is
      # ported to nixpkgs/unstable
      enable = false;

      # TODO: disable this when mpd is not enabled? Can that be detected on non
      # NixOS systems?
      settings = {
        input = {
          method = "fifo";
          source = "/tmp/mpd.fifo";
        };
      };
    };

    stylix.targets.cava = {
      enable = true;
      rainbow.enable = true;
    };
  };
}
