{ config, lib, ... }: { options.sysconfig.opts.wyoming = { enable = lib.options.mkOption { type = lib.types.bool; default = false; }; piper = lib.options.mkOption { type = lib.types.bool; default = false; }; openwakeword = lib.options.mkOption { type = lib.types.bool; default = false; }; faster-whisper = lib.options.mkOption { type = lib.types.bool; default = false; }; satellite = lib.options.mkOption { type = lib.types.bool; default = false; }; }; config = lib.mkIf config.sysconfig.opts.wyoming.enable { services.wyoming = { piper = lib.mkIf config.sysconfig.opts.wyoming.piper { servers.piper = { enable = true; voice = "en-us-ryan-medium"; uri = "tcp://0.0.0.0:11435"; }; }; openwakeword = lib.mkIf config.sysconfig.opts.wyoming.openwakeword { enable = true; uri = "tcp://0.0.0.0:11432"; preloadModels = [ "alexa" "hey_jarvis" "ok_nabu" ]; threshold = 0.5; customModelsDirectories = [ #./wake_words ]; }; faster-whisper = lib.mkIf config.sysconfig.opts.wyoming.faster-whisper { servers.whisper = { enable = true; device = "auto"; language = "en"; model = "medium.en"; uri = "tcp://0.0.0.0:11433"; }; }; satellite = lib.mkIf config.sysconfig.opts.wyoming.satellite { enable = true; uri = "tcp://0.0.0.0:11431"; user = "nathan"; vad.enable = false; }; }; }; }