{ # Настройки звука
  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 — устанавливает размер буфера (чем меньше значение, тем ниже задержка, но выше нагрузка на процессор).
      # Если со звуком есть проблемы (щелчки, прерывания), попробуйте увеличить значение (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
      # };
    };
  };
}