48 lines
1 KiB
Nix
48 lines
1 KiB
Nix
{
|
|
lib,
|
|
pkgs,
|
|
osConfig,
|
|
...
|
|
}: let
|
|
inherit (lib) mkIf;
|
|
inherit (builtins) elem;
|
|
inherit (osConfig.ooknet.host.hardware) features;
|
|
ookvolume = pkgs.writeShellApplication {
|
|
name = "ookvolume";
|
|
runtimeInputs = with pkgs; [pamixer libnotify];
|
|
text = ''
|
|
notify() {
|
|
volume=$(pamixer --get-volume-human)
|
|
notify-send --app-name="system-notify" -h string:x-canonical-private-synchronous:sys-notify " $volume"
|
|
}
|
|
option() {
|
|
case "$1" in
|
|
up)
|
|
pamixer --increase 5
|
|
;;
|
|
down)
|
|
pamixer --decrease 5
|
|
;;
|
|
mute)
|
|
pamixer --toggle-mute
|
|
;;
|
|
*) echo "Invalid option" ;;
|
|
esac
|
|
}
|
|
main() {
|
|
option "$@"
|
|
notify
|
|
}
|
|
main "$@"
|
|
'';
|
|
};
|
|
in {
|
|
config = mkIf (elem "audio" features) {
|
|
home.packages = [ookvolume];
|
|
ooknet.binds.volume = {
|
|
up = "ookvolume up";
|
|
down = "ookvolume down";
|
|
mute = "ookvolume mute";
|
|
};
|
|
};
|
|
}
|