Use udev to restore ALSA volume settings
Alsa-utils provides a udev rule to restore volume settings, so use that instead of restoring them from a systemd service. The "alsa-store" service saves the settings on shutdown.
This commit is contained in:
parent
666620cdd5
commit
02624758b1
@ -45,29 +45,19 @@ in
|
||||
|
||||
environment.systemPackages = [ alsaUtils ];
|
||||
|
||||
# ALSA provides a udev rule for restoring volume settings.
|
||||
services.udev.packages = [ alsaUtils ];
|
||||
|
||||
boot.kernelModules = optional config.sound.enableOSSEmulation "snd_pcm_oss";
|
||||
|
||||
jobs.alsa =
|
||||
{ description = "ALSA Volume Settings";
|
||||
|
||||
startOn = "stopped udevtrigger";
|
||||
|
||||
preStart =
|
||||
''
|
||||
mkdir -m 0755 -p $(dirname ${soundState})
|
||||
|
||||
# Try to restore the sound state.
|
||||
${alsaUtils}/sbin/alsactl --ignore init || true
|
||||
${alsaUtils}/sbin/alsactl --ignore -f ${soundState} restore || true
|
||||
'';
|
||||
|
||||
postStop =
|
||||
''
|
||||
# Save the sound state.
|
||||
${alsaUtils}/sbin/alsactl --ignore -f ${soundState} store
|
||||
'';
|
||||
boot.systemd.services."alsa-store" =
|
||||
{ description = "Store Sound Card State";
|
||||
wantedBy = [ "shutdown.target" ];
|
||||
before = [ "shutdown.target" ];
|
||||
unitConfig.DefaultDependencies = "no";
|
||||
serviceConfig.Type = "oneshot";
|
||||
serviceConfig.ExecStart = "${alsaUtils}/sbin/alsactl store --ignore";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user