nixpkgs/nixos/modules/security/rtkit.nix

76 lines
1.5 KiB
Nix
Raw Normal View History

# A module for rtkit, a DBus system service that hands out realtime
# scheduling priority to processes that ask for it.
{
config,
lib,
pkgs,
utils,
...
}:
with lib;
let
cfg = config.security.rtkit;
package = pkgs.rtkit;
in
{
options = {
security.rtkit.enable = mkOption {
2013-10-30 17:37:45 +01:00
type = types.bool;
default = false;
description = ''
Whether to enable the RealtimeKit system service, which hands
out realtime scheduling priority to user processes on
demand. For example, PulseAudio and PipeWire use this to
acquire realtime priority.
'';
};
security.rtkit.args = mkOption {
type = types.listOf types.str;
default = [ ];
description = ''
Command-line options for `rtkit-daemon`.
'';
example = [
"--our-realtime-priority=29"
"--max-realtime-priority=28"
];
};
};
config = mkIf cfg.enable {
2014-04-18 12:21:20 +02:00
security.polkit.enable = true;
# To make polkit pickup rtkit policies
environment.systemPackages = [ package ];
services.dbus.packages = [ package ];
systemd.packages = [ package ];
2014-04-18 12:21:20 +02:00
systemd.services.rtkit-daemon = {
serviceConfig.ExecStart = [
"" # Resets command from upstream unit.
"${package}/libexec/rtkit-daemon ${utils.escapeSystemdExecArgs cfg.args}"
];
};
users.users.rtkit = {
isSystemUser = true;
group = "rtkit";
description = "RealtimeKit daemon";
};
users.groups.rtkit = { };
};
}