{ pkgs, config, lib, ... }: with lib; let cfg = config.modules.hardware.rgb; in { options.modules.hardware.rgb = { enable = mkEnableOption "Enable support for rgb devices through OpenRGB"; package = mkOption { type = types.package; default = pkgs.openrgb; example = "pkgs.openrgb"; }; swapScript = mkOption { type = types.package; default = pkgs.writeShellScript "openrgb-swap" '' set -euo pipefail mapfile -t files < <( find "$XDG_CONFIG_HOME/OpenRGB" -name "*.orp" find /var/lib/OpenRGB -name "*.orp" 2>/dev/null ) selected=$(printf '%s\n' "''${files[@]}" | xargs -n1 basename | dmenu -p "select profile") [[ -z "$selected" ]] && exit 0 for f in "''${files[@]}"; do if [[ $(basename "$f") == "$selected" ]]; then ${lib.getExe cfg.package} -p "$f" break fi done ''; }; }; config = mkIf cfg.enable { services.hardware.openrgb.enable = true; services.hardware.openrgb.package = cfg.package; }; }