replace mpd with mopidy

This commit is contained in:
notgne2 2022-01-19 22:58:17 -07:00
parent 6b5dbaa92e
commit ef57d36110
No known key found for this signature in database
GPG key ID: BB661E172B42A7F8
5 changed files with 131 additions and 19 deletions

View file

@ -65,11 +65,6 @@ let
${pkgs.procps}/bin/pkill -2 wf-recorder
'';
um = pkgs.writeScript "update-music.sh" ''
#!${pkgs.bash}/bin/bash
${pkgs.mpc_cli}/bin/mpc update --wait && ${pkgs.mpc_cli}/bin/mpc clear && ${pkgs.mpc_cli}/bin/mpc ls | ${pkgs.mpc_cli}/bin/mpc add
'';
ezDrv = pkgs.runCommand "ez-commands" { } (''
mkdir -p $out/bin
ln -s ${selshot} $out/bin/selshot
@ -78,8 +73,6 @@ let
ln -s ${scrsaveclip} $out/bin/scrsaveclip
ln -s ${scrvidsaveclip} $out/bin/scrvidsaveclip
ln -s ${scrvidstop} $out/bin/scrvidstop
ln -s ${um} $out/bin/um
'' + (
if cfg.uploadScript != null then ''
ln -s ${cfg.uploadScript} $out/bin/upload_file
@ -203,11 +196,6 @@ in
keybindings =
let
musicRofi = pkgs.writeScript "music-rofi" ''
#!${pkgs.fish}/bin/fish
${pkgs.mpc_cli}/bin/mpc -f "%position% - %artist% - %album% - %title%" playlist | ${pkgs.rofi}/bin/rofi -dmenu -i | ${pkgs.coreutils}/bin/cut -d " " -f 1 | ${pkgs.findutils}/bin/xargs ${pkgs.mpc_cli}/bin/mpc play
'';
# ugly stupid way of doing things but im lazy
bwRofi = pkgs.writeScript "bw-rofi" ''
#!${pkgs.bash}/bin/bash
@ -302,7 +290,39 @@ in
"XF86AudioPause" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
"${modifier}+backslash" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
"${modifier}+m" = "exec ${musicRofi}";
"${modifier}+m" =
let
musicRofi = pkgs.writeShellScript "music-rofi" ''
SONGN=$(${pkgs.mpc_cli}/bin/mpc -f "%position% - %artist% - %album% - %title%" playlist | ${pkgs.rofi}/bin/rofi -dmenu -i | ${pkgs.coreutils}/bin/cut -d " " -f 1)
[ ! -z "$SONGN" ] && ${pkgs.mpc_cli}/bin/mpc play "$SONGN"
'';
in
"exec ${musicRofi}";
"${modifier}+k" = "exec ${pkgs.mpc_cli}/bin/mpc clear";
"${config.wayland.windowManager.sway.config.modifier}+Shift+k" = lib.mkForce "exec ${pkgs.mpc_cli}/bin/mpc ls \"Local media/Tracks\" | ${pkgs.mpc_cli}/bin/mpc add";
"${config.wayland.windowManager.sway.config.modifier}+Shift+m" =
let
mopidySearch = pkgs.writeShellScript "mopidy-search.sh" ''
QUERY=$(${pkgs.rofi}/bin/rofi -dmenu)
[ -z "$QUERY" ] && exit
RESULTS=$(${pkgs.mpc_cli}/bin/mpc search -f '%file% / %artist% - %title%' any "$QUERY")
USERLIST=$(echo "$RESULTS" | ${pkgs.gawk}/bin/awk -F' / ' '{print $2}')
CHOSEN=$(echo "$USERLIST" | ${pkgs.rofi}/bin/rofi -dmenu -i)
[ -z "$CHOSEN" ] && exit
NTH=$(echo "$USERLIST" | ${pkgs.gnugrep}/bin/grep -n "^$CHOSEN$" | cut -d':' -f1)
LINE=$(echo "$RESULTS" | ${pkgs.coreutils}/bin/tail "-n+$NTH" | ${pkgs.coreutils}/bin/head -1)
NAME=$(echo "$LINE" | ${pkgs.gawk}/bin/awk -F' / ' '{print $1}')
${pkgs.mpc_cli}/bin/mpc add "$NAME"
PLAYLIST=$(${pkgs.mpc_cli}/bin/mpc -f "%position% / %file%" playlist)
PLAYLIST_ENTRY=$(echo "$PLAYLIST" | ${pkgs.gnugrep}/bin/grep -E "^.* / $NAME$" | head -1)
PLAYLIST_ENTRY_POSITION=$(echo "$PLAYLIST_ENTRY" | ${pkgs.gawk}/bin/awk -F' / ' '{print $1}')
${pkgs.mpc_cli}/bin/mpc play "$PLAYLIST_ENTRY_POSITION"
'';
in
"exec ${mopidySearch}";
"${modifier}+p" = "exec ${bwRofi}";
"${modifier}+t" = "exec ${bwRofiOtp}";
@ -585,15 +605,45 @@ in
services.blueman-applet.enable = lib.mkDefault cfg.bluetooth;
services.mpris-proxy.enable = true;
services.mpris-proxy.enable = lib.mkDefault true;
services.mpdris2.enable = true;
services.playerctld.enable = true;
services.mpd = {
services.mopidy = {
enable = lib.mkDefault true;
musicDirectory = lib.mkDefault "${config.home.homeDirectory}/Music";
extensionPackages = with pkgs; [
mopidy-mpris
mopidy-youtube
mopidy-local
(mopidy-mpd.overrideAttrs (old: {
src = builtins.fetchGit {
url = "git+ssh://git@github.com/mopidy/mopidy-mpd.git";
rev = "a8c4debc139020fbb17066b66a746644a915296c";
};
}))
];
settings = {
youtube = {
enabled = lib.mkDefault true;
};
file = {
media_dirs = lib.mkDefault "${config.home.homeDirectory}/Music";
};
local = {
enabled = lib.mkDefault true;
media_dir = lib.mkDefault "${config.home.homeDirectory}/Music";
};
mpd = {
enabled = lib.mkDefault true;
hostname = lib.mkDefault "::";
command_blacklist = lib.mkDefault "";
};
};
};
services.playerctld.enable = lib.mkDefault true;
gtk = {
enable = lib.mkDefault true;
iconTheme = {