@@ -33,16 +33,6 @@ in
3333 '';
3434 };
3535
36− enableMediaKeys = mkOption {
37− type = types.bool;
38− default = false;
39− description = ''
40− Whether to enable volume and capture control with keyboard media keys.
41−
42− Enabling this will turn on <option>services.actkbd</option>.
43− '';
44− };
45−
4636 extraConfig = mkOption {
4737 type = types.lines;
4838 default = "";
@@ -54,6 +44,31 @@ in
5444 '';
5545 };
5646
47+ mediaKeys = {
48+
49+ enable = mkOption {
50+ type = types.bool;
51+ default = false;
52+ description = ''
53+ Whether to enable volume and capture control with keyboard media keys.
54+
55+ Enabling this will turn on <option>services.actkbd</option>.
56+ '';
57+ };
58+
59+ volumeStep = mkOption {
60+ type = types.string;
61+ default = "1";
62+ example = "1%";
63+ description = ''
64+ The value by which to increment/decrement volume on media keys.
65+
66+ See amixer(1) for allowed values.
67+ '';
68+ };
69+
70+ };
71+
5772 };
5873
5974 };
@@ -90,17 +105,17 @@ in
90105 };
91106 };
92107
93− services.actkbd = mkIf config.sound.enableMediaKeys {
108+ services.actkbd = mkIf config.sound.mediaKeys.enable {
94109 enable = true;
95110 bindings = [
96111 # "Mute" media key
97112 { keys = [ 113 ]; events = [ "key" ]; command = "${alsaUtils}/bin/amixer -q set Master toggle"; }
98113
99114 # "Lower Volume" media key
100− { keys = [ 114 ]; events = [ "key" "rep" ]; command = "${alsaUtils}/bin/amixer -q set Master 1- unmute"; }
115+ { keys = [ 114 ]; events = [ "key" "rep" ]; command = "${alsaUtils}/bin/amixer -q set Master ${config.sound.mediaKeys.volumeStep}- unmute"; }
101116
102117 # "Raise Volume" media key
103− { keys = [ 115 ]; events = [ "key" "rep" ]; command = "${alsaUtils}/bin/amixer -q set Master 1+ unmute"; }
118+ { keys = [ 115 ]; events = [ "key" "rep" ]; command = "${alsaUtils}/bin/amixer -q set Master ${config.sound.mediaKeys.volumeStep}+ unmute"; }
104119
105120 # "Mic Mute" media key
106121 { keys = [ 190 ]; events = [ "key" ]; command = "${alsaUtils}/bin/amixer -q set Capture toggle"; }