pipewire: move the clock quantum config into sane.programs proper
this ensures it's available in the sandbox
This commit is contained in:
parent
f10bb6c86c
commit
a7b8eb179b
|
@ -62,18 +62,8 @@
|
||||||
# HACK/TODO: make `programs.P.env.VAR` behave according to `mime.priority`
|
# HACK/TODO: make `programs.P.env.VAR` behave according to `mime.priority`
|
||||||
sane.programs.firefox.env = lib.mkForce {};
|
sane.programs.firefox.env = lib.mkForce {};
|
||||||
sane.programs.epiphany.env.BROWSER = "epiphany";
|
sane.programs.epiphany.env.BROWSER = "epiphany";
|
||||||
|
sane.programs.pipewire.config = {
|
||||||
# note the .conf.d approach: using ~/.config/pipewire/pipewire.conf directly breaks all audio,
|
# tune so Dino doesn't drop audio
|
||||||
# presumably because that deletes the defaults entirely whereas the .conf.d approach selectively overrides defaults
|
|
||||||
sane.user.fs.".config/pipewire/pipewire.conf.d/10-fix-dino-mic-cutout.conf".symlink.text = ''
|
|
||||||
# config docs: <https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-PipeWire#properties>
|
|
||||||
# useful to run `pw-top` to see that these settings are actually having effect,
|
|
||||||
# and `pw-metadata` to see if any settings conflict (e.g. max-quantum < min-quantum)
|
|
||||||
#
|
|
||||||
# restart pipewire after editing these files:
|
|
||||||
# - `systemctl --user restart pipewire`
|
|
||||||
# - pipewire users will likely stop outputting audio until they are also restarted
|
|
||||||
#
|
|
||||||
# there's seemingly two buffers for the mic (see: <https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/FAQ#pipewire-buffering-explained>)
|
# there's seemingly two buffers for the mic (see: <https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/FAQ#pipewire-buffering-explained>)
|
||||||
# 1. Pipewire buffering out of the driver and into its own member.
|
# 1. Pipewire buffering out of the driver and into its own member.
|
||||||
# 2. Pipewire buffering into Dino.
|
# 2. Pipewire buffering into Dino.
|
||||||
|
@ -84,11 +74,9 @@
|
||||||
# `pw-metadata -n settings 0 clock.force-quantum 1024` reduces to about 1 error per second.
|
# `pw-metadata -n settings 0 clock.force-quantum 1024` reduces to about 1 error per second.
|
||||||
# `pw-metadata -n settings 0 clock.force-quantum 2048` reduces to 1 error every < 10s.
|
# `pw-metadata -n settings 0 clock.force-quantum 2048` reduces to 1 error every < 10s.
|
||||||
# pipewire default config includes `clock.power-of-two-quantum = true`
|
# pipewire default config includes `clock.power-of-two-quantum = true`
|
||||||
context.properties = {
|
min-quantum = 2048;
|
||||||
default.clock.min-quantum = 2048
|
max-quantum = 8192;
|
||||||
default.clock.max-quantum = 8192
|
};
|
||||||
}
|
|
||||||
'';
|
|
||||||
|
|
||||||
boot.loader.efi.canTouchEfiVariables = false;
|
boot.loader.efi.canTouchEfiVariables = false;
|
||||||
# /boot space is at a premium. default was 20.
|
# /boot space is at a premium. default was 20.
|
||||||
|
|
|
@ -7,6 +7,20 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
sane.programs.pipewire = {
|
sane.programs.pipewire = {
|
||||||
|
configOption = with lib; mkOption {
|
||||||
|
default = {};
|
||||||
|
type = types.submodule {
|
||||||
|
options.min-quantum = mkOption {
|
||||||
|
type = types.int;
|
||||||
|
default = 16;
|
||||||
|
};
|
||||||
|
options.max-quantum = mkOption {
|
||||||
|
type = types.int;
|
||||||
|
default = 2048;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
suggestedPrograms = [ "wireplumber" ];
|
suggestedPrograms = [ "wireplumber" ];
|
||||||
|
|
||||||
# sandbox.method = "landlock"; #< also works
|
# sandbox.method = "landlock"; #< also works
|
||||||
|
@ -40,6 +54,27 @@ in
|
||||||
".config/pulse"
|
".config/pulse"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# note the .conf.d approach: using ~/.config/pipewire/pipewire.conf directly breaks all audio,
|
||||||
|
# presumably because that deletes the defaults entirely whereas the .conf.d approach selectively overrides defaults
|
||||||
|
fs.".config/pipewire/pipewire.conf.d/10-sane-config.conf".symlink.text = ''
|
||||||
|
# config docs: <https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-PipeWire#properties>
|
||||||
|
# useful to run `pw-top` to see that these settings are actually having effect,
|
||||||
|
# and `pw-metadata` to see if any settings conflict (e.g. max-quantum < min-quantum)
|
||||||
|
#
|
||||||
|
# restart pipewire after editing these files:
|
||||||
|
# - `systemctl --user restart pipewire`
|
||||||
|
# - pipewire users will likely stop outputting audio until they are also restarted
|
||||||
|
#
|
||||||
|
# there's seemingly two buffers for the mic (see: <https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/FAQ#pipewire-buffering-explained>)
|
||||||
|
# 1. Pipewire buffering out of the driver and into its own member.
|
||||||
|
# 2. Pipewire buffering into each specific app (e.g. Dino).
|
||||||
|
# note that pipewire default config includes `clock.power-of-two-quantum = true`
|
||||||
|
context.properties = {
|
||||||
|
default.clock.min-quantum = ${builtins.toString cfg.config.min-quantum}
|
||||||
|
default.clock.max-quantum = ${builtins.toString cfg.config.max-quantum}
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
# see: <https://docs.pipewire.org/page_module_protocol_native.html>
|
# see: <https://docs.pipewire.org/page_module_protocol_native.html>
|
||||||
# defaults to placing the socket in /run/user/$id/{pipewire-0,pipewire-0-manager,...}
|
# defaults to placing the socket in /run/user/$id/{pipewire-0,pipewire-0-manager,...}
|
||||||
# but that's trickier to sandbox
|
# but that's trickier to sandbox
|
||||||
|
|
Loading…
Reference in New Issue
Block a user