summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2013-09-22 21:31:38 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2013-09-22 21:39:05 +0200
commitd94aa36f1e49ed38a48c7270d4b5a198744a7dcb (patch)
tree460c12a0bdb6744d81faa89e4cf5c72efeadd9c6
parentf19065c283f69e44caeddb20fab9051ac52a31ec (diff)
downloadnixlib-d94aa36f1e49ed38a48c7270d4b5a198744a7dcb.tar
nixlib-d94aa36f1e49ed38a48c7270d4b5a198744a7dcb.tar.gz
nixlib-d94aa36f1e49ed38a48c7270d4b5a198744a7dcb.tar.bz2
nixlib-d94aa36f1e49ed38a48c7270d4b5a198744a7dcb.tar.lz
nixlib-d94aa36f1e49ed38a48c7270d4b5a198744a7dcb.tar.xz
nixlib-d94aa36f1e49ed38a48c7270d4b5a198744a7dcb.tar.zst
nixlib-d94aa36f1e49ed38a48c7270d4b5a198744a7dcb.zip
Fix saving the ALSA sound card state
This didn't work reliably because it raced with the remounting of /.
So if you were unlucky, then / was read-only by the time we ran
"alsactl store".  Now the sound card state is saved before anything is
unmounted/remounted.
-rw-r--r--modules/services/audio/alsa.nix14
1 files changed, 8 insertions, 6 deletions
diff --git a/modules/services/audio/alsa.nix b/modules/services/audio/alsa.nix
index ed08c653f3ac..6c53ef46ab91 100644
--- a/modules/services/audio/alsa.nix
+++ b/modules/services/audio/alsa.nix
@@ -52,12 +52,14 @@ in
 
     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";
-        serviceConfig.ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p /var/lib/alsa";
+        wantedBy = [ "multi-user.target" ];
+        unitConfig.RequiresMountsFor = "/var/lib/alsa";
+        serviceConfig = {
+          Type = "oneshot";
+          RemainAfterExit = true;
+          ExecStart = "${pkgs.coreutils}/bin/mkdir -p /var/lib/alsa";
+          ExecStop = "${alsaUtils}/sbin/alsactl store --ignore";
+        };
       };
 
   };