This repo assumes you are running Ubuntu 20 LTS or NixOS, but it may work on other versions/distros if you are lucky.
Follow these steps to initialize a fresh environment capable of building and running any Innovation Upstream repo.
mkdir $HOME/workspace && cd $HOME/workspace(Optional, see step 4)- Clone this repo
- Run
cmd/install.sh - Run
home-manager switchbuild the env
(Optional) If you cloned devrc into a different directory, you will need to set the
DEVRC_DIR environment variable in ~/.devrc.
$ export DEVRC_DIR="$HOME/workspace-2/devrc"
$ source $DEVRC_DIR/.zshrcIf you need to add/modify your shell profile, you can do so by
creating/modifying ~/.devrc. (home-manager will tell zsh to source this file
if it exists)
Local speech-to-text using faster-whisper with i3 integration.
-
Run the setup script to create Python venv and install faster-whisper:
./scripts/setup-dictation.sh
-
Add keybinding to
/etc/nixos/i3config.nix:bindsym $mod+s exec --no-startup-id ~/workspace/devrc/scripts/dictate -
Rebuild:
sudo nixos-rebuild switch home-manager switch
With Alt+s:
- Press once: Start recording (notification shows "Recording...")
- Auto-stop: Recording stops automatically after 1s of silence
- Optional: Press
Alt+sagain to force immediate stop
- First use: Daemon auto-starts (~5-10s to load model on GPU)
- Transcription: ~0.3s on GPU with large-v3-turbo
| Option | Description |
|---|---|
--model tiny.en |
Fastest, least accurate (~1GB RAM) |
--model small.en |
Fast, good balance (~2GB RAM) |
--model large-v3-turbo |
Default, 8x faster than large-v3 (~4GB VRAM) |
--model large-v3 |
Best accuracy, slower (~10GB VRAM) |
--daemon |
Start daemon manually |
--stop-daemon |
Stop running daemon |
--rebuild-cache |
Rebuild nix library path cache |
The script includes optimizations for technical dictation:
- Developer vocabulary prompt: Guides Whisper toward technical terms (NixOS, TypeScript, React, etc.)
- Word replacements: Auto-corrects common misheard terms (e.g., "knicks os" β "NixOS")
- Reduced beam_size: Faster transcription with minimal accuracy loss
Edit WORD_REPLACEMENTS in scripts/dictate.py to add your own corrections.