l 2: use pulse.nix
This commit is contained in:
parent
3a92ac0e9b
commit
1d47f59e8f
|
@ -8,6 +8,7 @@ in {
|
||||||
#./urxvt.nix
|
#./urxvt.nix
|
||||||
./xserver
|
./xserver
|
||||||
./mpv.nix
|
./mpv.nix
|
||||||
|
./pulse.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
users.extraUsers.mainUser.extraGroups = [ "audio" ];
|
users.extraUsers.mainUser.extraGroups = [ "audio" ];
|
||||||
|
@ -16,11 +17,6 @@ in {
|
||||||
|
|
||||||
virtualisation.libvirtd.enable = true;
|
virtualisation.libvirtd.enable = true;
|
||||||
|
|
||||||
hardware.pulseaudio = {
|
|
||||||
enable = true;
|
|
||||||
systemWide = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.ssh.startAgent = false;
|
programs.ssh.startAgent = false;
|
||||||
|
|
||||||
security.setuidPrograms = [ "slock" ];
|
security.setuidPrograms = [ "slock" ];
|
||||||
|
|
88
lass/2configs/pulse.nix
Normal file
88
lass/2configs/pulse.nix
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with config.krebs.lib;
|
||||||
|
let
|
||||||
|
pkg = pkgs.pulseaudioLight;
|
||||||
|
runDir = "/run/pulse";
|
||||||
|
|
||||||
|
alsaConf = pkgs.writeText "asound.conf" ''
|
||||||
|
ctl_type.pulse {
|
||||||
|
libs.native = ${pkgs.alsaPlugins}/lib/alsa-lib/libasound_module_ctl_pulse.so;
|
||||||
|
}
|
||||||
|
pcm_type.pulse {
|
||||||
|
libs.native = ${pkgs.alsaPlugins}/lib/alsa-lib/libasound_module_pcm_pulse.so;
|
||||||
|
}
|
||||||
|
ctl.!default {
|
||||||
|
type pulse
|
||||||
|
}
|
||||||
|
pcm.!default {
|
||||||
|
type pulse
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
|
clientConf = pkgs.writeText "client.conf" ''
|
||||||
|
autospawn=no
|
||||||
|
default-server = unix:${runDir}/socket
|
||||||
|
'';
|
||||||
|
|
||||||
|
configFile = pkgs.writeText "default.pa" ''
|
||||||
|
.include ${pkg}/etc/pulse/default.pa
|
||||||
|
load-module ${toString [
|
||||||
|
"module-native-protocol-unix"
|
||||||
|
"auth-anonymous=1"
|
||||||
|
"socket=${runDir}/socket"
|
||||||
|
]}
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
environment = {
|
||||||
|
etc = {
|
||||||
|
"asound.conf".source = alsaConf;
|
||||||
|
# XXX mkForce is not strong enough (and neither is mkOverride) to create
|
||||||
|
# /etc/pulse/client.conf, see pulseaudio-hack below for a solution.
|
||||||
|
#"pulse/client.conf" = mkForce { source = clientConf; };
|
||||||
|
#"pulse/client.conf".source = mkForce clientConf;
|
||||||
|
"pulse/default.pa".source = configFile;
|
||||||
|
};
|
||||||
|
systemPackages = [
|
||||||
|
pkg
|
||||||
|
] ++ optionals config.services.xserver.enable [
|
||||||
|
pkgs.pavucontrol
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Allow PulseAudio to get realtime priority using rtkit.
|
||||||
|
security.rtkit.enable = true;
|
||||||
|
|
||||||
|
system.activationScripts.pulseaudio-hack = ''
|
||||||
|
ln -fns ${clientConf} /etc/pulse/client.conf
|
||||||
|
'';
|
||||||
|
|
||||||
|
systemd.services.pulse = {
|
||||||
|
wantedBy = [ "sound.target" ];
|
||||||
|
before = [ "sound.target" ];
|
||||||
|
environment = {
|
||||||
|
PULSE_RUNTIME_PATH = "${runDir}/home";
|
||||||
|
};
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${pkg}/bin/pulseaudio";
|
||||||
|
ExecStartPre = pkgs.writeDash "pulse-start" ''
|
||||||
|
install -o pulse -g audio -m 0750 -d ${runDir}
|
||||||
|
install -o pulse -g audio -m 0700 -d ${runDir}/home
|
||||||
|
'';
|
||||||
|
PermissionsStartOnly = "true";
|
||||||
|
User = "pulse";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
users = {
|
||||||
|
groups.pulse.gid = config.users.users.pulse.uid;
|
||||||
|
users.pulse = {
|
||||||
|
uid = genid "pulse";
|
||||||
|
group = "pulse";
|
||||||
|
extraGroups = [ "audio" ];
|
||||||
|
home = "${runDir}/home";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue