summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bragi.nix8
m---------custom/trivmix0
-rw-r--r--custom/trivmix-service.nix17
3 files changed, 20 insertions, 5 deletions
diff --git a/bragi.nix b/bragi.nix
index 3e0abc1f..dc732626 100644
--- a/bragi.nix
+++ b/bragi.nix
@@ -210,11 +210,11 @@ in rec {
210 "outnode0" = { initial = "1"; adjustable = false; }; 210 "outnode0" = { initial = "1"; adjustable = false; };
211 "outnode1" = { initial = "1"; adjustable = false; }; 211 "outnode1" = { initial = "1"; adjustable = false; };
212 212
213 "headphones0" = { connectOut = "system:playback_3"; connectIn = "outnode0:out"; group = "headphones"; initial = "1"; }; 213 "headphones0" = { connectOut = "system:playback_3"; connectIn = "outnode0:out"; group = "headphones"; initial = "1"; balance = "right"; };
214 "headphones1" = { connectOut = "system:playback_4"; connectIn = "outnode1:out"; group = "headphones"; initial = "1"; }; 214 "headphones1" = { connectOut = "system:playback_4"; connectIn = "outnode1:out"; group = "headphones"; initial = "1"; balance = "left"; };
215 215
216 "speakers0" = { connectOut = "system:playback_7"; connectIn = "outnode0:out"; group = "speakers"; initial = "0"; }; 216 "speakers0" = { connectOut = "system:playback_7"; connectIn = "outnode0:out"; group = "speakers"; initial = "0"; balance = "right"; };
217 "speakers1" = { connectOut = "system:playback_8"; connectIn = "outnode1:out"; group = "speakers"; initial = "0"; }; 217 "speakers1" = { connectOut = "system:playback_8"; connectIn = "outnode1:out"; group = "speakers"; initial = "0"; balance = "left"; };
218 }; 218 };
219 219
220 services.mpd = { 220 services.mpd = {
diff --git a/custom/trivmix b/custom/trivmix
Subproject 31a88f4dd0800caeeb56d785b1876a9c2b88fb9 Subproject 72dfd7bdb13e71c04604c0458582960259ec8fb
diff --git a/custom/trivmix-service.nix b/custom/trivmix-service.nix
index 9ebf02f1..f2d549fe 100644
--- a/custom/trivmix-service.nix
+++ b/custom/trivmix-service.nix
@@ -39,6 +39,18 @@ let
39 description = "Volumes of mixers that share a group name are synchronised"; 39 description = "Volumes of mixers that share a group name are synchronised";
40 }; 40 };
41 41
42 balance = mkOption {
43 type = types.nullOr types.str;
44 default = null;
45 description = "Volumes of mixers are multiplied with their balances, this is the name of the file that contains the factor for this mixer";
46 };
47
48 initialBalance = mkOption {
49 type = types.str;
50 default = "1";
51 description = "Initial balance";
52 };
53
42 initial = mkOption { 54 initial = mkOption {
43 type = types.str; 55 type = types.str;
44 default = "1"; 56 default = "1";
@@ -60,8 +72,11 @@ let
60 72
61 mixerDeps = filter (x: any (hasPrefix (x + ":")) connectIn || any (hasPrefix (x + ":")) connectOut) (attrNames cfg); 73 mixerDeps = filter (x: any (hasPrefix (x + ":")) connectIn || any (hasPrefix (x + ":")) connectOut) (attrNames cfg);
62 74
63 trivmixArgs = [ "--client" name "--level" initial ] 75 trivmixArgs = let
76 dirName = if isNull group then name else group;
77 in [ "--client" name "--level" initial "--initial-balance" initialBalance]
64 ++ optionals connect ["--run" connectScript] 78 ++ optionals connect ["--run" connectScript]
79 ++ optionals (adjustable && (! isNull balance)) ["--balance" "/dev/shm/mix/${dirName}/${balance}"]
65 ++ optional (adjustable && isNull group) "/dev/shm/mix/${name}/level" 80 ++ optional (adjustable && isNull group) "/dev/shm/mix/${name}/level"
66 ++ optional (! isNull group) "/dev/shm/mix/${group}/level"; 81 ++ optional (! isNull group) "/dev/shm/mix/${group}/level";
67 in { 82 in {