nix-flakes/overlays/spotx.nix
imnyang 70284509f3
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
Initial commit
2026-07-03 16:53:49 +09:00

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;
});
}