nixos_dots/modules/nixos/sound.nix

70 lines
3.5 KiB
Nix
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{ # Настройки звука
hardware.pulseaudio.enable = false;
security.rtkit.enable = true; # Уменьшает задержку?
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
wireplumber = {
enable = true;
# Запретить конкретному софту редактировать громкость микрофона
# В терминал `wpctl status`, найти нужное приложение в списке клиентов
# Потом `wpctl inspect номер-клиента | grep application.process.binary`
# `systemctl --user restart wireplumber pipewire pipewire-pulse`
# Доп ссылки по теме
# https://www.reddit.com/r/archlinux/comments/190dvl8/pipewirewayland_how_to_stop_applications_from/
# https://askubuntu.com/questions/749407/is-there-any-way-to-prevent-application-from-changing-volume-level-of-my-microph
# https://www.linux.org/threads/prevent-applications-from-changing-microphone-gain.41636/
# https://www.reddit.com/r/Ubuntu/comments/pvlm6r/how_to_disable_microphone_autoadjusting/
extraScripts."99-stop-microphone-auto-adjust.lua" = ''
table.insert (default_access.rules,{
matches = {
{
{ "application.process.binary", "=", ".Discord-wrapped" }
},
{
{ "application.process.binary", "=", "chromium" }
},
{
{ "application.process.binary", "=", "librewolf" }
},
{
{ "application.process.binary", "=", "firefox" }
},
{
{ "application.process.binary", "=", "steam" }
},
{
{ "application.process.binary", "=", ".telegram-desktop-wrapped" }
}
},
default_permissions = "rx",
})
'';
};
# Ниже настройки имеют формат "число - название"
# Число определяет приоритет настройки, а название описывает цель конфига
extraConfig.pipewire = {
"10-clock-rate" = {
"context.properties" = {
"default.clock.rate" = 48000;
# "default.clock.allowed-rates" = [ 44100 48000 88200 96000 176400 192000 352800 384000 705600 768000 ];
};
};
# Ниже настройки для минимальной задержки в играх (например osu!stable через wine)
# quantum — устанавливает размер буфера (чем меньше значение, тем ниже задержка, но выше нагрузка на процессор).
# Можно посчитать теоретическую задержку в секундах, поделив quantum на rate (48/48000 будет 1мс)
# Если со звуком есть проблемы (щелчки, прерывания), попробуйте увеличить значение (64, 128, 256) или просто удалить эту настройку
# По умолчанию я закомментировал настройку, чтоб у людей не было проблем
# "92-low-latency" = {
# default.clock.quantum = 32; # default = 1024
# default.clock.min-quantum = 32; # default = 32
# default.clock.max-quantum = 32; # default = 2048
# };
};
};
}