replace mpd with mopidy
This commit is contained in:
parent
6b5dbaa92e
commit
ef57d36110
@ -57,6 +57,7 @@
|
||||
fonts = import ./home-manager/modules/fonts.nix;
|
||||
gaming = import ./home-manager/modules/gaming.nix inputs;
|
||||
gamerenv = import ./home-manager/modules/gamerenv.nix;
|
||||
mopidy = import ./home-manager/modules/mopidy.nix;
|
||||
all = import ./home-manager/modules/default.nix inputs;
|
||||
};
|
||||
|
||||
|
@ -11,5 +11,6 @@ inputs:
|
||||
(import ./gaming.nix inputs)
|
||||
./gamerenv.nix
|
||||
./fonts.nix
|
||||
./mopidy.nix
|
||||
];
|
||||
}
|
||||
|
@ -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 = {
|
||||
|
60
home-manager/modules/mopidy.nix
Normal file
60
home-manager/modules/mopidy.nix
Normal file
@ -0,0 +1,60 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with pkgs;
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.mopidy;
|
||||
|
||||
mopidyEnv = buildEnv {
|
||||
name = "mopidy-with-extensions-${mopidy.version}";
|
||||
paths = closePropagation cfg.extensionPackages;
|
||||
pathsToLink = [ "/${mopidyPackages.python.sitePackages}" ];
|
||||
buildInputs = [ makeWrapper ];
|
||||
postBuild = ''
|
||||
makeWrapper ${mopidy}/bin/mopidy $out/bin/mopidy \
|
||||
--prefix PYTHONPATH : $out/${mopidyPackages.python.sitePackages}
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
options = {
|
||||
services.mopidy = {
|
||||
enable = mkEnableOption "Mopidy, a music player daemon";
|
||||
|
||||
extensionPackages = mkOption {
|
||||
default = [ ];
|
||||
type = types.listOf types.package;
|
||||
example = literalExpression "[ pkgs.mopidy-spotify ]";
|
||||
description = ''
|
||||
Mopidy extensions that should be loaded by the service.
|
||||
'';
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
default = { };
|
||||
type = with types; attrsOf (attrsOf (oneOf [ str int bool ]));
|
||||
description = ''
|
||||
The settings that Mopidy should use.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
xdg.configFile."mopidy/mopidy.conf".text = lib.generators.toINI { } cfg.settings;
|
||||
|
||||
home.packages = [ mopidyEnv ];
|
||||
|
||||
systemd.user.services.mopidy = {
|
||||
Unit = {
|
||||
Description = "mopidy music player daemon";
|
||||
After = [ "network.target" "sound.target" ];
|
||||
};
|
||||
Install = { WantedBy = [ "graphical-session.target" ]; };
|
||||
Service = {
|
||||
ExecStart = "${mopidyEnv}/bin/mopidy";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
@ -196,7 +196,7 @@ in
|
||||
|
||||
# Shit breaks without this lol
|
||||
programs.dconf.enable = lib.mkDefault true;
|
||||
services.dbus.packages = with pkgs; [ gnome3.dconf ];
|
||||
services.dbus.packages = with pkgs; [ dconf ];
|
||||
|
||||
# better default swap
|
||||
boot.kernel.sysctl = { "vm.swappiness" = lib.mkDefault 45; };
|
||||
|
Loading…
Reference in New Issue
Block a user