# The Perfect Voice Assistant is a NixOS Module

**URL:** https://discourse.nixos.org/t/the-perfect-voice-assistant-is-a-nixos-module/77100
**Category:** Guides
**Created:** [April 18, 2026, 5:37am UTC](https://discourse.nixos.org/t/the-perfect-voice-assistant-is-a-nixos-module/77100 "2026-04-18T05:37:13Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![QuackHack-McBlindy](https://discourse.nixos.org/user_avatar/discourse.nixos.org/quackhack-mcblindy/32/33329_2.png) [@QuackHack-McBlindy](https://discourse.nixos.org/u/QuackHack-McBlindy)
#### Post date: [April 18, 2026, 5:37am UTC](https://discourse.nixos.org/t/the-perfect-voice-assistant-is-a-nixos-module/77100/1 "2026-04-18T05:37:13Z")

</div>

Hello fellow Nixers. I’m excited to share my project: **yo** , a flake-based voice assistant for NixOS.

**yo makes it easy to set up a voice assistant and define your own voice-driven scripts.**

Since the intent data and fuzzy index are precompiled at build time - this will outperform any other voice assistant, and still give user full control.

Let’s write a declarative voice command!

Give the script a name and a description.

```auto
yo.scripts.<name>.description = "script description"

```

Give the script parameters.

```auto
yo.scripts.<name>.parameters = [   
    { 
        name = "state";
        type = "string";
        description = "State of the device or room";
    }

```

And define the voice sentences and entity lists.

```auto
yo.scripts.<name>.voice = {
    enabled = true;
    priority = 2;
    sentences = [
      "turn {state} the light in {room}"
    ];
    lists = {
	  state.values = [
	    { "in" = "[on|activate]"; out = "ON"; }             
		{ "in" = "off"; out = "OFF"; } 
      ];
   	};

```

And finally write the code for the script.

```auto

yo.scripts.<name>.code = ''
  echo "Turning $state the device: $device"
''; 

```

And there you go! Simple as that - you just wrote your first voice command.

Activate the server service

```auto
services.yo-rs.server.enable = true; 

```

Your going to need a microphone as well - activate the client:

```auto
services.yo-rs.client.enable = true;

```

**That’s it!** Your all set!

It’s a quite extensive project, check out the project [GitHub](https://github.com/QuackHack-McBlindy/yo) for source code and example usage.

I know this is _quite niche_ - but would love to hear your thoughts.

**Stay safe!**

---

<div class="post-metadata">

### Author: ![mightyiam](https://discourse.nixos.org/user_avatar/discourse.nixos.org/mightyiam/32/33998_2.png) [@mightyiam](https://discourse.nixos.org/u/mightyiam)
#### Post date: [April 18, 2026, 2:24pm UTC](https://discourse.nixos.org/t/the-perfect-voice-assistant-is-a-nixos-module/77100/2 "2026-04-18T14:24:02Z")

</div>

Intentions to upstream?

---

<div class="post-metadata">

### Author: ![QuackHack-McBlindy](https://discourse.nixos.org/user_avatar/discourse.nixos.org/quackhack-mcblindy/32/33329_2.png) [@QuackHack-McBlindy](https://discourse.nixos.org/u/QuackHack-McBlindy)
#### Post date: [April 18, 2026, 6:07pm UTC](https://discourse.nixos.org/t/the-perfect-voice-assistant-is-a-nixos-module/77100/3 "2026-04-18T18:07:57Z")

</div>

I might be open for that.

---

<div class="post-metadata">

### Author: ![crertel](https://discourse.nixos.org/letter_avatar_proxy/v4/letter/c/90ced4/32.png) [@crertel](https://discourse.nixos.org/u/crertel)
#### Post date: [April 18, 2026, 6:48pm UTC](https://discourse.nixos.org/t/the-perfect-voice-assistant-is-a-nixos-module/77100/4 "2026-04-18T18:48:46Z")

</div>

This is neat! You might want to mention that the STT part is handled by (if I’m reading the repo correctly) the Whisper family of models.

---

<div class="post-metadata">

### Author: ![QuackHack-McBlindy](https://discourse.nixos.org/user_avatar/discourse.nixos.org/quackhack-mcblindy/32/33329_2.png) [@QuackHack-McBlindy](https://discourse.nixos.org/u/QuackHack-McBlindy)
#### Post date: [April 18, 2026, 7:16pm UTC](https://discourse.nixos.org/t/the-perfect-voice-assistant-is-a-nixos-module/77100/5 "2026-04-18T19:16:48Z")

</div>

Oh yes you are correct.

Speech to text uses GGML.bin models and ONNX based models are being used for text to speech responses and wake word detection.

---

<div class="post-metadata">

### Author: ![QuackHack-McBlindy](https://discourse.nixos.org/user_avatar/discourse.nixos.org/quackhack-mcblindy/32/33329_2.png) [@QuackHack-McBlindy](https://discourse.nixos.org/u/QuackHack-McBlindy)
#### Post date: [May 19, 2026, 2:36pm UTC](https://discourse.nixos.org/t/the-perfect-voice-assistant-is-a-nixos-module/77100/6 "2026-05-19T14:36:48Z")

</div>

I created a smart watch, that let’s me run my Nix voice commands on- the-go!  
Deploying hosts from your wrist – anytime/anywhere.

Repository has videos showcasing usage.

> **[GitHub - QuackHack-McBlindy/ESP32-S3-WATCH-rs: Bare Metal (no-std) voice-driven wearable OS for...](https://github.com/QuackHack-McBlindy/ESP32-S3-WATCH-rs)**
>
> Bare Metal (no-std) voice-driven wearable OS for ESP32-S3 smartwatch with a high focus on accessibility and smart home/media control. Written in Rust, using esp-hal as it's hardware abstraction layer.

---

<div class="post-metadata">

### Author: ![Super8](https://discourse.nixos.org/letter_avatar_proxy/v4/letter/s/ccd318/32.png) [@Super8](https://discourse.nixos.org/u/Super8)
#### Post date: [August 16, 2026, 2:36am UTC](https://discourse.nixos.org/t/the-perfect-voice-assistant-is-a-nixos-module/77100/7 "2026-08-16T02:36:01Z")

</div>

This looks like a great project! I wanto to achieve something similar. I will start by studying your stuff and see if I can contribute here instead of starting some new thing.

---

<div class="post-metadata">

### Author: ![Super8](https://discourse.nixos.org/letter_avatar_proxy/v4/letter/s/ccd318/32.png) [@Super8](https://discourse.nixos.org/u/Super8)
#### Post date: [August 17, 2026, 1:50pm UTC](https://discourse.nixos.org/t/the-perfect-voice-assistant-is-a-nixos-module/77100/8 "2026-08-17T13:50:31Z")

</div>

Hey, @QuackHack-McBlindy . I am trying to reproduce your stuff today. I ran into some expeted blocker for such a young and big package. I will be sending some issues into your repo as I run into things I believe deserve to be mentioned.

---

<div class="post-metadata">

### Author: ![QuackHack-McBlindy](https://discourse.nixos.org/user_avatar/discourse.nixos.org/quackhack-mcblindy/32/33329_2.png) [@QuackHack-McBlindy](https://discourse.nixos.org/u/QuackHack-McBlindy)
#### Post date: [August 17, 2026, 9:06pm UTC](https://discourse.nixos.org/t/the-perfect-voice-assistant-is-a-nixos-module/77100/9 "2026-08-17T21:06:04Z")

</div>

Thanks! Any help I get is appreciated.
