Skip to content

πŸ”Š Declarative NixOS module to configure a modern PipeWire-based audio stack with WirePlumber, ALSA support, real-time scheduling and helper tools

License

Notifications You must be signed in to change notification settings

typovrak/nixos-audio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

NixOS 24.11+ License MIT Buy me a coffee Portal Discord join us

πŸ”Š NixOS Audio

Declarative NixOS module to configure a modern PipeWire-based audio stack with WirePlumber, ALSA support, real-time scheduling and helper tools.

🧩 Part of the Typovrak NixOS ecosystem

This module is part of Typovrak NixOS, a fully modular and declarative operating system configuration built entirely with :

  • 🧱 30+ standalone modules : Each managing a specific tool, feature or aesthetic like zsh, i3, lighdm, polybar, gtk and more.
  • 🎨 Catppuccin Mocha : The default theme across terminal, GUI, and login interfaces.
  • πŸ›‘οΈ 100% FOSS compliant : No proprietary software included unless explicitly chosen.
  • πŸ§‘β€πŸ’» Built for developers : Optimized for speed, keyboard-centric workflows and expressive CLI tooling.

Explore the full system : πŸ‘‰ github.com/typovrak/nixos

Caution

This module is opinionated, it may override, replace, or remove files and settings without prompt. To avoid unexpected changes, back up your existing files or fork this module to take full control. Follow this documentation to avoid any of this problem.

πŸ“¦ Features

  • 🎡 PipeWire audio : Enables pipewire, wireplumber, ALSA compatibility (including 32-bit) and PulseAudio emulation.
  • πŸ”Š CLI mixer : Installs pamixer for scripting and terminal volume control.
  • πŸŽ›οΈ Modular routing : Includes helvum for graphical patchbay management.
  • πŸ›‘οΈ Real-time priority : Activates rtkit to grant real-time scheduling to audio threads.
  • ❌ PulseAudio disabled : Ensures no conflict with legacy PulseAudio service.

πŸ“‚ Repository structure

❯ tree -a -I ".git*"
.
β”œβ”€β”€ configuration.nix # module configuration
β”œβ”€β”€ LICENSE.md        # MIT license
└── README.md         # this documentation

1 directory, 3 files

βš™οΈ Prerequisites

1. NixOS version

Requires NixOS 24.11 or newer.

2. User validation

the target user must be defined in config.username. See typovrak main nixos configuration for more details.

3. Backup

No backup needed for this module.

⬇️ Installation

πŸš€ Method 1 : Out-of-the-box

Fetch the module directly in your main nixos configuration at /etc/nixos/configuration.nix using fetchGit

# /etc/nixos/configuration.nix

let
  nixos-audio = fetchGit {
    url = "https://github.com/typovrak/nixos-audio.git";
    ref = "main";
    rev = "689a7ccd5c25455f61d02636daab938bb68e4aa2"; # update to the desired commit
  };
in
{
  imports = [
    /etc/nixos/hardware-configuration.nix # system hardware settings
    /etc/nixos/variables.nix # defines config.username and other variables, see https://github.com/typovrak/nixos for more details
    (import "${nixos-audio}/configuration.nix")
  ];
}

Once imported, rebuild your system to apply changes

sudo nixos-rebuild switch

🍴 Method 2 : Fork

Want to personalize this module ?

Fork it and add this custom module in your main nixos configuration at /etc/nixos/configuration.nix using fetchGit

let
  nixos-audio = fetchGit {
    url = "https://github.com/<YOUR_USERNAME>/nixos-audio.git";
    ref = "main";
    rev = "<COMMIT>"; # see below
  };
in {
  imports = [
    /etc/nixos/hardware-configuration.nix # system hardware settings
    /etc/nixos/variables.nix # defines config.username and other variables, see https://github.com/typovrak/nixos for more details
    (import "${nixos-audio}/configuration.nix")
  ];
}

Get the latest commit hash by executing

git clone https://github.com/<YOUR_USERNAME>/nixos-audio.git &&
cd nixos-audio &&
git log -1 --pretty=format:"%H"

🎬 Usage

See your volume level

pamixer --get-volume

Toggle mute audio with

pamixer --toggle-mute

πŸ“š Learn more

🌐 Discover my NixOS system portal

Dive into typovrak.tv/nixos Catppuccin mocha green themed gateway to my GitHub and NixOS setup.

Browse every module, example and config in a sleek with an interactive interface that feels just like your desktop.

❀️ Support

If this module saved you time, please ⭐️ the repo and share feedback.
You can also support me on β˜• Buy me a coffee

πŸ’¬ Join the Typovrak community on Discord πŸ‡«πŸ‡·

If you've ever rm -rfed your config by mistake or rebuilt for the 42nd time because a semicolon was missing…

You're not alone, Welcome home !

🎯 Join us on Discord »

🧭 What you’ll find is :

  • πŸ’» #nixos-setup - get help with modules, rebuilds and configs.
  • 🌐 #web-dev - talk JS, TypeScript, React, Node and more.
  • 🧠 #open-source - share your repos, contribute to others and discuss FOSS culture.
  • ⌨️ #typing - layouts, mechanical keyboards and speed goals.
  • 🎨 #ricing - dotfiles, theming tips and desktop screenshots.

Everyone's welcome no matter how many times you've broken your system (except for Windows users) πŸ˜„


Made with πŸ’œ by typovrak

About

πŸ”Š Declarative NixOS module to configure a modern PipeWire-based audio stack with WirePlumber, ALSA support, real-time scheduling and helper tools

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Sponsor this project

Languages