Some checks failed
CI / check (push) Has been cancelled
CI / ida (push) Has been cancelled
CI / cpt (push) Has been cancelled
CI / build-nixos (ena) (push) Has been cancelled
CI / build-nixos (hako) (push) Has been cancelled
CI / build-nixos (kazusa) (push) Has been cancelled
CI / build-nixos (mizuki) (push) Has been cancelled
48 lines
1.3 KiB
Nix
48 lines
1.3 KiB
Nix
final: prev:
|
|
let
|
|
spotx = prev.fetchurl {
|
|
url = "https://raw.githubusercontent.com/SpotX-Official/SpotX-Bash/c9b506c7749f853c827b6d4bd1d57818f953f68d/spotx.sh";
|
|
hash = "sha256-irUHPR0Qdff2dpVtLNKGhgBBSd7Es1z7TkamxWi6JtI=";
|
|
};
|
|
|
|
# 맥 여부를 변수로 저장
|
|
isDarwin = prev.stdenv.isDarwin;
|
|
in
|
|
{
|
|
spotify = prev.spotify.overrideAttrs (old: {
|
|
# 1. 의존성은 플랫폼에 상관없이 추가 (맥에서도 빌드 도구로 쓰일 수 있음)
|
|
nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ (with prev; [
|
|
util-linux
|
|
perl
|
|
unzip
|
|
zip
|
|
curl
|
|
]);
|
|
|
|
# 2. unpackPhase: 맥이 아닐 때만 shebang 패치 적용
|
|
unpackPhase = if (old ? unpackPhase && !isDarwin) then
|
|
builtins.replaceStrings
|
|
[ "runHook postUnpack" ]
|
|
[
|
|
''
|
|
patchShebangs --build ${spotx}
|
|
runHook postUnpack
|
|
''
|
|
]
|
|
old.unpackPhase
|
|
else old.unpackPhase or null;
|
|
|
|
# 3. installPhase: 맥이 아닐 때만 SpotX 스크립트 실행
|
|
installPhase = if (old ? installPhase && !isDarwin) then
|
|
builtins.replaceStrings
|
|
[ "runHook postInstall" ]
|
|
[
|
|
''
|
|
bash ${spotx} -f -P "$out/share/spotify"
|
|
runHook postInstall
|
|
''
|
|
]
|
|
old.installPhase
|
|
else old.installPhase or null;
|
|
});
|
|
}
|