nix-dotfiles/modules/hardware/rgb.nix
2026-04-05 17:00:30 -07:00

42 lines
1.1 KiB
Nix

{ 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 | ${lib.getExe config.modules.desktop.rofi.package} -dmenu -i -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;
};
}