aboutsummaryrefslogtreecommitdiffstats
path: root/pkgs/by-name/mp/mpp
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-11-16 21:13:24 +0100
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-11-16 21:13:24 +0100
commitb317fc17f00ea74fe2267950b3119dddddd78b09 (patch)
treebdcf6882c5ba53129001597a9d057a0c4f9d4ca2 /pkgs/by-name/mp/mpp
parentbuild(treewide): Update (diff)
downloadnixos-config-b317fc17f00ea74fe2267950b3119dddddd78b09.zip
refactor(pkgs/mpc): Rename to `mpp`
Nixpkgs has renamed their `mpc-cli` package to just `mpc`, turning this `mpc` package into an override for the official nixpkgs one. I think being explicit about the fact, that `mpc` is wrapped is the best solution here.
Diffstat (limited to 'pkgs/by-name/mp/mpp')
-rwxr-xr-xpkgs/by-name/mp/mpp/mpp.sh24
-rw-r--r--pkgs/by-name/mp/mpp/package.nix63
2 files changed, 87 insertions, 0 deletions
diff --git a/pkgs/by-name/mp/mpp/mpp.sh b/pkgs/by-name/mp/mpp/mpp.sh
new file mode 100755
index 00000000..0d636ac5
--- /dev/null
+++ b/pkgs/by-name/mp/mpp/mpp.sh
@@ -0,0 +1,24 @@
+#!/usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.1.2" . %SHELL_LIBRARY_PATH
+
+case "$1" in
+"searchadd")
+ shift 1
+ mpc-searchadd "$@"
+ ;;
+"lyrics")
+ shift 1
+ mpc-lyrics "$@"
+ ;;
+"beetrm")
+ shift 1
+ mpc-beetrm "$@"
+ ;;
+*)
+ mpc "$@"
+ ;;
+esac
+
+# vim: ft=sh
diff --git a/pkgs/by-name/mp/mpp/package.nix b/pkgs/by-name/mp/mpp/package.nix
new file mode 100644
index 00000000..29ec1c80
--- /dev/null
+++ b/pkgs/by-name/mp/mpp/package.nix
@@ -0,0 +1,63 @@
+{
+ sysLib,
+ mpc,
+ fd,
+ symlinkJoin,
+ stdenv,
+}: let
+ script = sysLib.writeShellScript {
+ name = "mpp";
+ src = ./mpp.sh;
+ generateCompletions = false;
+ # We source the wrappers from the environment, to ensure that they have the same
+ # configurations (e.g. MPD_MUSIC_DIR in `mpc-lyrics`)
+ keepPath = true;
+ dependencies = [
+ mpc
+ ];
+ };
+
+ mpcShare = stdenv.mkDerivation {
+ name = "${mpc.name}-only-share";
+ nativeBuildInputs = [fd];
+ strictDeps = true;
+
+ src = mpc;
+
+ buildPhase = ''
+ fixMpc() {
+ file_path="$1"
+
+ new_file_path="$(echo "$file_path" | sed "s|mpc|mpp|g")"
+
+ echo "Fixing '$file_path' -> '$new_file_path'.."
+
+ [ -f "$file_path"] && mkdir --parents "$(dirname "$new_file_path")"
+
+ mv "$file_path" "$new_file_path"
+ }
+
+ # Replace all reverences to `mpc`. First all files
+ fd "mpc" "." --hidden --type file | while read -r file_path; do
+ fixMpc "$file_path"
+ done
+ # Then their possible parent directories.
+ fd "mpc" "." --hidden --type directory | while read -r file_path; do
+ fixMpc "$file_path"
+ done
+ # Now patch all reverences to `mpc` away
+ fd "." --hidden --type file | while read -r file_path; do
+ sed --in-place 's/mpc/mpp/g' "$file_path"
+ done
+ '';
+
+ installPhase = ''
+ mkdir "$out";
+ cp --recursive ./share "$out/share";
+ '';
+ };
+in
+ symlinkJoin {
+ name = "mpp-merged";
+ paths = [script mpcShare];
+ }