blob: 29ec1c8020d24f34808b3e7b16cce93538440ab6 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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];
}
|