{user}: { lib, pkgs, config, ... }: with lib; let cfg = config.roles.mpd; in { options.roles.mpd = { enable = mkEnableOption "setup mpd client"; host = mkOption {default = "192.168.1.2";}; }; config = mkIf cfg.enable { home-manager.users.${user}.imports = [ { 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; systemd.user.services = { snapclient = { Unit = { Description = "Snapclient"; }; Service = { ExecStart = "${pkgs.snapcast}/bin/snapclient -h ${cfg.host}"; }; Install = { WantedBy = ["graphical-session.target"]; }; }; }; } ]; }; }