{ lib, pkgs, config, ... }: with lib; let cfg = config.roles.mpd; terminal = config.programs.terminal; termcmd = "${terminal}/bin/${terminal.pname}"; in { options.roles.mpd = { enable = mkEnableOption "setup mpd client"; host = mkOption {default = "192.168.1.2";}; }; config = mkIf cfg.enable { programs.ncmpcpp = { enable = true; settings.mpd_host = cfg.host; bindings = [ { key = "j"; command = "scroll_down"; } { key = "k"; command = "scroll_up"; } { key = "l"; command = "next_column"; } { key = "h"; command = "previous_column"; } { key = "J"; command = ["select_item" "scroll_down"]; } { key = "K"; command = ["select_item" "scroll_up"]; } ]; }; services.mpd-mpris = { enable = true; mpd.host = cfg.host; }; programs.waybar.settings.mainBar.mpd.server = cfg.host; programs.scripts = [ { name = "ncmpcpp"; text = '' ${termcmd} -e ${pkgs.ncmpcpp}/bin/ncmpcpp ''; hotkeys = [{key = "M";}]; install = false; } ]; systemd.user.services = { snapclient = { Unit = { Description = "Snapclient"; }; Service = { ExecStart = "${pkgs.snapcast}/bin/snapclient -h ${cfg.host}"; }; Install = { WantedBy = ["graphical-session.target"]; }; }; }; }; }