0
0
mirror of https://github.com/cucumber-sp/yandex-music-linux.git synced 2024-12-23 22:22:59 +03:00

Merge branch 'master' into dev

This commit is contained in:
Andrey Onishchenko 2024-03-11 15:29:06 +03:00
commit 19360d7fa1
23 changed files with 437 additions and 152 deletions

View File

@ -1,46 +0,0 @@
#!/bin/bash
set -e
if [ -f /etc/os-release ]; then
. /etc/os-release
OS=$NAME
elif [ -f /etc/lsb-release ]; then
. /etc/lsb-release
OS=$DISTRIB_ID
else
OS=$(uname -s)
fi
case $OS in
"Arch Linux")
echo "Arch Linux"
pacman -Syy --noconfirm
pacman -S --noconfirm git sudo base-devel p7zip nodejs jq asar electron27 libpulse dpkg unzip xdg-utils python
# fix makepkg from non-root
mkdir /home/build
chgrp nobody /home/build
chmod g+ws /home/build
setfacl -m u::rwx,g::rwx /home/build
setfacl -d --set u::rwx,g::rwx,o::- /home/build
chown nobody .
sudo -u nobody makepkg --log
mkdir dist
mv *.pkg.tar.zst dist
mv ./src/app/yandex-music.asar dist/yandex-music.asar
mv ./src/app/release_notes.json dist/release_notes.json
sh ./build_deb.sh -a all
mv deb/*.deb dist
;;
"Ubuntu")
echo NixOS
export NIXPKGS_ALLOW_UNFREE=1
nix build --impure
;;
*)
echo "Operating system is not recognized."
;;
esac

View File

@ -21,26 +21,58 @@ jobs:
container: container:
image: archlinux:latest image: archlinux:latest
steps: steps:
- name: Install packages
run: pacman -Syy --noconfirm && pacman -S --noconfirm git sudo base-devel p7zip nodejs jq asar electron27 libpulse dpkg unzip xdg-utils python rpm-tools
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
ref: ${{ (inputs.ref || '') }} ref: ${{ (inputs.ref || '') }}
- name: Build - name: Create dist directory
run: sh ./.github/workflows/build.sh run: mkdir -p dist
- name: Upload Arch artifact - name: Fix permissions for build
run: mkdir /home/build && chgrp nobody /home/build && chmod g+ws /home/build && setfacl -m u::rwx,g::rwx /home/build && setfacl -d --set u::rwx,g::rwx,o::- /home/build && chown nobody .
- name: Make Arch package
run: sudo -u nobody makepkg --log && mv *.pkg.tar.zst dist/
- name: Build tarball packages
run: bash ./build_tarball.sh -a all && cp tar/* dist/
- name: Build Deb packages
run: bash ./build_deb.sh -a all && mv deb/*.deb dist
- name: Build RPM packages
run: bash ./build_rpm.sh && mv rpm/*.rpm dist
- name: Retrieve Asar and release notes
run: mv ./src/app/yandex-music.asar dist/yandex-music.asar && mv ./src/app/release_notes.json dist/release_notes.json
- name: Upload Arch artifacts
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
path: ./dist/*.pkg.tar.zst path: ./dist/*.pkg.tar.zst
name: arch-packages name: arch-packages
- name: Upload tarball artifacts
uses: actions/upload-artifact@v4
with:
path: ./dist/*.tar.gz
name: tar-packages
- name: Upload Deb artifact - name: Upload Deb artifact
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
path: ./dist/*.deb path: ./dist/*.deb
name: deb-packages name: deb-packages
- name: Upload RPM artifact
uses: actions/upload-artifact@v4
with:
path: ./dist/*.rpm
name: rpm-packages
- name: Upload Asar artifacts - name: Upload Asar artifacts
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:

View File

@ -32,7 +32,7 @@ jobs:
run: python utility/generate_packages.py run: python utility/generate_packages.py
- name: Retrieve version to make commit - name: Retrieve version to make commit
run: sh .github/workflows/retrieve_version.sh run: bash .github/workflows/retrieve_version.sh
- name: Commit and push changes - name: Commit and push changes
uses: EndBug/add-and-commit@v9.1.4 uses: EndBug/add-and-commit@v9.1.4
@ -44,7 +44,7 @@ jobs:
author_email: "loraner123@gmail.com" author_email: "loraner123@gmail.com"
- name: Publish package changes to AUR - name: Publish package changes to AUR
if: "${{ github.event.commits[0] }}" if: "${{ github.event.commits[0] || steps.commit.outputs.commited }}"
uses: KSXGitHub/github-actions-deploy-aur@v2.7.0 uses: KSXGitHub/github-actions-deploy-aur@v2.7.0
with: with:
pkgname: "yandex-music" pkgname: "yandex-music"
@ -54,7 +54,7 @@ jobs:
commit_username: "cucumber-sp" commit_username: "cucumber-sp"
commit_email: "loraner123@gmail.com" commit_email: "loraner123@gmail.com"
ssh_private_key: "${{ secrets.AUR_SSH_PRIVATE_KEY }}" ssh_private_key: "${{ secrets.AUR_SSH_PRIVATE_KEY }}"
commit_message: "${{ github.event.commits[0].message }}" commit_message: "${{ github.event.commits[0].message || env.release_name }}"
ssh_keyscan_types: "rsa,dsa,ecdsa,ed25519" ssh_keyscan_types: "rsa,dsa,ecdsa,ed25519"
outputs: outputs:
@ -86,7 +86,7 @@ jobs:
run: | run: |
sudo apt-get update sudo apt-get update
sudo apt-get install jq sudo apt-get install jq
sh ./.github/workflows/retrieve_version.sh bash ./.github/workflows/retrieve_version.sh
- name: Get Release Notes HTML - name: Get Release Notes HTML
run: echo "release_html=$(jq -r --arg version "$VERSION" '.["desktop-release-notes." + $version]' ./dist/release_notes.json)" >> $GITHUB_ENV run: echo "release_html=$(jq -r --arg version "$VERSION" '.["desktop-release-notes." + $version]' ./dist/release_notes.json)" >> $GITHUB_ENV

4
.gitignore vendored
View File

@ -7,3 +7,7 @@ app/
arch/ arch/
deb/ deb/
tar/
rpm/

View File

@ -1,7 +1,7 @@
# Maintainer: Andrey Onischenko loraner123@gmail.com # Maintainer: Andrey Onischenko loraner123@gmail.com
pkgname=yandex-music pkgname=yandex-music
pkgver="5.0.12" pkgver="5.0.14"
pkgrel="1" pkgrel="1"
pkgdesc="Yandex Music - Personal recommendations, selections for any occasion and new music" pkgdesc="Yandex Music - Personal recommendations, selections for any occasion and new music"
arch=("any") arch=("any")
@ -10,11 +10,11 @@ license=("custom")
depends=("electron27" "libpulse" "xdg-utils") depends=("electron27" "libpulse" "xdg-utils")
makedepends=("p7zip" "nodejs" "asar" "jq" "python") makedepends=("p7zip" "nodejs" "asar" "jq" "python")
source=("https://music-desktop-application.s3.yandex.net/stable/Yandex_Music_x64_5.0.12.exe" "git+https://github.com/cucumber-sp/yandex-music-linux") source=("https://music-desktop-application.s3.yandex.net/stable/Yandex_Music_x64_5.0.14.exe" "git+https://github.com/cucumber-sp/yandex-music-linux")
sha256sums=("4ebeac9620f60e9e2333114cf8c8fb3dc6f2c2c70da58ba56902aa75d65ce4f8" "SKIP") sha256sums=("c10c6c4b5d596f9bf490a231d7c13bbd2627109f71c9c57aa4e2b034e31252f4" "SKIP")
build() { build() {
sh "$srcdir/yandex-music-linux/repack.sh" "$srcdir/Yandex_Music_x64_5.0.12.exe" bash "$srcdir/yandex-music-linux/repack.sh" "$srcdir/Yandex_Music_x64_5.0.14.exe"
} }
package() { package() {

View File

@ -36,7 +36,7 @@ You can obtain the latest version of package from `AUR` using one of the [AUR He
For this example I will use [yay](https://github.com/Jguer/yay) For this example I will use [yay](https://github.com/Jguer/yay)
``` ```bash
yay -S yandex-music yay -S yandex-music
``` ```
@ -46,7 +46,7 @@ Download prebuilt binary package from [Releases](https://github.com/cucumber-sp/
Then you can install it with the following command Then you can install it with the following command
``` ```bash
pacman -U yandex-music-<version>-any.pkg.tar.zst pacman -U yandex-music-<version>-any.pkg.tar.zst
``` ```
@ -66,7 +66,7 @@ Download prebuilt binary package from [Releases](https://github.com/cucumber-sp/
Then you can install it with the following command Then you can install it with the following command
``` ```bash
dpkg -i yandex-music_<version>_<arch>.deb dpkg -i yandex-music_<version>_<arch>.deb
``` ```
@ -89,7 +89,7 @@ That's the list of packages you might need to install to be able to manually bui
In addition you will need to install [Asar](https://github.com/electron/asar) tool with `npm`. I recommend install it globally with the following command In addition you will need to install [Asar](https://github.com/electron/asar) tool with `npm`. I recommend install it globally with the following command
``` ```bash
npm install -g @electron/asar npm install -g @electron/asar
``` ```
@ -101,8 +101,8 @@ Last step is to download original client `.exe` file. You can get it yourself or
If you only want to get extracted app project with applied patches, you can use the following command: If you only want to get extracted app project with applied patches, you can use the following command:
``` ```bash
sh repack.sh -x [-o OUTPUT_DIR default=./app] <YM.exe> bash repack.sh -x [-o OUTPUT_DIR default=./app] <YM.exe>
``` ```
*** ***
@ -110,8 +110,8 @@ sh repack.sh -x [-o OUTPUT_DIR default=./app] <YM.exe>
`.asar` is archive file that containes all electron app resources and information, but doesn't hold Electron binaries. If you have `.asar` file you can launch app using `electron <app>.asar`. You can build this archive with the following command: `.asar` is archive file that containes all electron app resources and information, but doesn't hold Electron binaries. If you have `.asar` file you can launch app using `electron <app>.asar`. You can build this archive with the following command:
``` ```bash
sh repack.sh [-o OUTPUT_DIR default=./app] <YM.exe> bash repack.sh [-o OUTPUT_DIR default=./app] <YM.exe>
``` ```
*** ***
@ -120,7 +120,7 @@ sh repack.sh [-o OUTPUT_DIR default=./app] <YM.exe>
You can build `pacman` package file manually using `PKGBUILD` file from the this repository. Run following commands in folder with `PKGBUILD` file inside to get `.pkg.tar.zst` package: You can build `pacman` package file manually using `PKGBUILD` file from the this repository. Run following commands in folder with `PKGBUILD` file inside to get `.pkg.tar.zst` package:
``` ```bash
pacman -S electron libpulse pacman -S electron libpulse
makepkg makepkg
``` ```
@ -131,8 +131,8 @@ makepkg
You can build `.deb` binary package using the following command: You can build `.deb` binary package using the following command:
``` ```bash
sh build_deb.sh [-a <x64|armv7l|arm64|all> default=x64] bash build_deb.sh [-a <x64|armv7l|arm64|all> default=x64]
``` ```
*** ***
@ -146,7 +146,7 @@ The `yandex-music` package has unlicensed license, so you need to have
Execute next to build and run yandex music directly from github Execute next to build and run yandex music directly from github
``` ```bash
nix run github:cucumber-sp/yandex-music-linux nix run github:cucumber-sp/yandex-music-linux
``` ```
@ -155,11 +155,41 @@ nix run github:cucumber-sp/yandex-music-linux
Execute next in this repository to build yandex-music package without using Execute next in this repository to build yandex-music package without using
flakes. flakes.
``` ```bash
nix-build --expr '(import <nixpkgs> {}).callPackage ./nix {}' nix-build --expr '(import <nixpkgs> {}).callPackage ./nix {}'
``` ```
### Install to NixOS ### Install to NixOS
This flake exports `modules` list. Append it to your system modules and add 1. Add input in your flake.nix
`yandex-music` package to `environment.systemPackages`.
```nix
inputs = {
yandex-music.url = "github:cucumber-sp/yandex-music-linux";
};
```
2. Import module in your `configuration.nix` or `home-manager.nix`
```nix
imports = [
yandex-music.nixosModule
];
```
3. Add package `yandex-music`
For `configuration.nix`:
```nix
environment.systemPackages = with pkgs; [
yandex-music
];
```
For Home Manager:
```nix
home.packages = with pkgs; [
yandex-music
];
```

View File

@ -10,12 +10,14 @@ usage() {
echo " -h Show this help and exit" echo " -h Show this help and exit"
} }
download_electron_binary(){ prepare_tarball(){
arch=${1} arch=${1}
echo "Downloading electron ${arch}" echo "Preparing tarball for ${arch}"
LINK=$(jq -r .electron."${arch}" ./utility/version_info.json) if [ ! -f "tar/yandex-music_${version}_${arch}.tar.gz" ]; then
curl -L -o "${TEMPDIR}/electron-${arch}.zip" "${LINK}" echo "Building tarball for ${arch}"
unzip -q "${TEMPDIR}/electron-${arch}.zip" -d "${TEMPDIR}/electron-${arch}" bash build_tarball.sh -a "${arch}"
fi
cp "tar/yandex-music_${version}_${arch}.tar.gz" "${TEMPDIR}/yandex-music_${version}_${arch}.tar.gz"
} }
build_deb(){ build_deb(){
@ -30,25 +32,8 @@ build_deb(){
sed -i "s/%version%/${version}/g" "${pkgdir}/DEBIAN/control" sed -i "s/%version%/${version}/g" "${pkgdir}/DEBIAN/control"
sed -i "s/%arch%/${pkgarch}/g" "${pkgdir}/DEBIAN/control" sed -i "s/%arch%/${pkgarch}/g" "${pkgdir}/DEBIAN/control"
mkdir -p "${pkgdir}/usr/lib/yandex-music" # extract tarball to pkgdir
mkdir -p "${pkgdir}/usr/share/applications" tar -xzf "${TEMPDIR}/yandex-music_${version}_${arch}.tar.gz" -C "${pkgdir}"
mkdir -p "${pkgdir}/usr/share/licenses/yandex-music"
mkdir -p "${pkgdir}/usr/share/pixmaps"
mkdir -p "${pkgdir}/usr/bin"
install -Dm644 "${TEMPDIR}/app/yandex-music.asar" "${pkgdir}/usr/lib/yandex-music/yandex-music.asar"
install -Dm644 "${TEMPDIR}/app/favicon.png" "${pkgdir}/usr/share/pixmaps/yandex-music.png"
install -Dm644 "${TEMPDIR}/app/favicon.png" "${pkgdir}/usr/share/icons/hicolor/48x48/apps/yandex-music.png"
install -Dm644 "${TEMPDIR}/app/favicon.svg" "${pkgdir}/usr/share/icons/hicolor/scalable/apps/yandex-music.svg"
install -Dm644 "./templates/desktop" "${pkgdir}/usr/share/applications/yandex-music.desktop"
install -Dm644 "./LICENSE.md" "${pkgdir}/usr/share/licenses/yandex-music/LICENSE"
mv "${TEMPDIR}/electron-${arch}/" "${pkgdir}/usr/lib/yandex-music/electron"
echo "#!/bin/sh" > "${pkgdir}/usr/bin/yandex-music"
echo 'exec /usr/lib/yandex-music/electron/electron /usr/lib/yandex-music/yandex-music.asar "$@"' >> "${pkgdir}/usr/bin/yandex-music"
chmod 755 "${pkgdir}/usr/bin/yandex-music"
dpkg-deb --build "${pkgdir}" "deb/yandex-music_${version}_${pkgarch}.deb" dpkg-deb --build "${pkgdir}" "deb/yandex-music_${version}_${pkgarch}.deb"
} }
@ -101,34 +86,20 @@ trap clear EXIT
#loading version info with jq #loading version info with jq
version=$(jq -r '.ym.version' ./utility/version_info.json) version=$(jq -r '.ym.version' ./utility/version_info.json)
exe_name=$(jq -r '.ym.exe_name' ./utility/version_info.json)
exe_link=$(jq -r '.ym.exe_link' ./utility/version_info.json)
exe_sha256=$(jq -r '.ym.exe_sha256' ./utility/version_info.json)
#downloading exe
echo "Downloading ${exe_name}"
curl -L -o "${TEMPDIR}/${exe_name}" "${exe_link}"
#checking sha256
echo "Checking sha256"
echo "${exe_sha256} ${TEMPDIR}/${exe_name}" | sha256sum -c
echo "Repaking ${exe_name}"
sh repack.sh -o "${TEMPDIR}/app" "${TEMPDIR}/${exe_name}"
mkdir -p "deb" mkdir -p "deb"
if [ ${x64} -eq 1 ]; then if [ ${x64} -eq 1 ]; then
download_electron_binary "x64" prepare_tarball "x64"
build_deb "x64" "amd64" build_deb "x64" "amd64"
fi fi
if [ ${armv7l} -eq 1 ]; then if [ ${armv7l} -eq 1 ]; then
download_electron_binary "armv7l" prepare_tarball "armv7l"
build_deb "armv7l" "armhf" build_deb "armv7l" "armhf"
fi fi
if [ ${arm64} -eq 1 ]; then if [ ${arm64} -eq 1 ]; then
download_electron_binary "arm64" prepare_tarball "arm64"
build_deb "arm64" "arm64" build_deb "arm64" "arm64"
fi fi

115
build_rpm.sh Normal file
View File

@ -0,0 +1,115 @@
#!/bin/bash
set -e
usage() {
echo "Usage: $(basename "$0") [-h] [-a <x64|armv7l|arm64|all> default=x64]"
echo
echo " Options:"
echo " -a Architecture to build for (<x64|armv7l|arm64|all> default=x64)"
echo " -h Show this help and exit"
}
prepare_tarball(){
arch=${1}
echo "Preparing tarball for ${arch}"
if [ ! -f "tar/yandex-music_${version}_${arch}.tar.gz" ]; then
echo "Building tarball for ${arch}"
bash build_tarball.sh -a "${arch}"
fi
cp "tar/yandex-music_${version}_${arch}.tar.gz" "${TEMPDIR}/yandex-music_${version}_${arch}.tar.gz"
cd "${TEMPDIR}"
tar -xzf "yandex-music_${version}_${arch}.tar.gz"
mkdir -p "yandex-music-${version}"
mv usr "yandex-music-${version}"
tar -czf "yandex-music_${version}_${arch}.tar.gz" "yandex-music-${version}"
rm -rf "yandex-music-${version}"
cd "${INITIAL_DIR}"
cp "${TEMPDIR}/yandex-music_${version}_${arch}.tar.gz" "${TEMPDIR}/rpmbuild/SOURCES/yandex-music_${version}_${arch}.tar.gz"
}
build_rpm(){
arch=${1}
pkgarch=${2}
echo "Building ${arch} package"
cp "templates/rpm.spec" "${TEMPDIR}/rpmbuild/SPECS/${arch}.spec"
sed -i "s/%version%/${version}/g" "${TEMPDIR}/rpmbuild/SPECS/${arch}.spec"
sed -i "s/%arch%/${pkgarch}/g" "${TEMPDIR}/rpmbuild/SPECS/${arch}.spec"
sed -i "s/%source_tarball%/yandex-music_${version}_${arch}.tar.gz/g" "${TEMPDIR}/rpmbuild/SPECS/${arch}.spec"
rpmbuild --define "_topdir ${TEMPDIR}/rpmbuild" -bb "${TEMPDIR}/rpmbuild/SPECS/${arch}.spec"
cp "${TEMPDIR}/rpmbuild/RPMS/${pkgarch}/yandex-music-${version}-1.${pkgarch}.rpm" "rpm/yandex-music-${version}-1.${pkgarch}.rpm"
}
init_rpm(){
echo "Initializing RPM build"
mkdir -p "${TEMPDIR}/rpmbuild/SOURCES"
mkdir -p "${TEMPDIR}/rpmbuild/SPECS"
}
x64=0
armv7l=0
arm64=0
#checking for arch option (if not specified set x64) and h option
while getopts :a:h name; do
case ${name} in
a)
case ${OPTARG} in
x64) x64=1 ;;
armv7l) armv7l=1 ;;
arm64) arm64=1 ;;
all)
x64=1
armv7l=1
arm64=1
;;
*)
echo "Invalid architecture specified"
usage
exit 1
;;
esac
;;
h)
usage
exit 0
;;
*)
usage
exit 1
;;
esac
done
#checking if at least one arch is specified else set x64
if [ ${x64} -eq 0 ] && [ ${armv7l} -eq 0 ] && [ ${arm64} -eq 0 ]; then
x64=1
fi
clear() {
rm -rf "${TEMPDIR}"
}
TEMPDIR="$(mktemp -d)"
INITIAL_DIR=${PWD}
trap clear EXIT
#loading version info with jq
version=$(jq -r '.ym.version' ./utility/version_info.json)
init_rpm
mkdir -p "rpm"
if [ ${x64} -eq 1 ]; then
prepare_tarball "x64"
build_rpm "x64" "x86_64"
fi
if [ ${armv7l} -eq 1 ]; then
prepare_tarball "armv7l"
build_rpm "armv7l" "armv7hl"
fi
if [ ${arm64} -eq 1 ]; then
prepare_tarball "arm64"
build_rpm "arm64" "aarch64"
fi

131
build_tarball.sh Normal file
View File

@ -0,0 +1,131 @@
#!/bin/bash
set -e
usage() {
echo "Usage: $(basename "$0") [-h] [-a <x64|armv7l|arm64|all> default=x64]"
echo
echo " Options:"
echo " -a Architecture to build for (<x64|armv7l|arm64|all> default=x64)"
echo " -o Output directory"
echo " -h Show this help and exit"
}
download_electron_binary(){
arch=${1}
echo "Downloading electron ${arch}"
LINK=$(jq -r .electron."${arch}" ./utility/version_info.json)
curl -L -o "${TEMPDIR}/electron-${arch}.zip" "${LINK}"
unzip -q "${TEMPDIR}/electron-${arch}.zip" -d "${TEMPDIR}/electron-${arch}"
}
build_tarball(){
arch=${1}
app_dir="${TEMPDIR}/yandex-music_${version}_${arch}"
mkdir -p "${app_dir}/usr/lib/yandex-music"
mkdir -p "${app_dir}/usr/share/applications"
mkdir -p "${app_dir}/usr/share/licenses/yandex-music"
mkdir -p "${app_dir}/usr/share/pixmaps"
mkdir -p "${app_dir}/usr/bin"
install -Dm644 "${TEMPDIR}/app/yandex-music.asar" "${app_dir}/usr/lib/yandex-music/yandex-music.asar"
install -Dm644 "${TEMPDIR}/app/favicon.png" "${app_dir}/usr/share/pixmaps/yandex-music.png"
install -Dm644 "${TEMPDIR}/app/favicon.png" "${app_dir}/usr/share/icons/hicolor/48x48/apps/yandex-music.png"
install -Dm644 "${TEMPDIR}/app/favicon.svg" "${app_dir}/usr/share/icons/hicolor/scalable/apps/yandex-music.svg"
install -Dm644 "./templates/desktop" "${app_dir}/usr/share/applications/yandex-music.desktop"
install -Dm644 "./LICENSE.md" "${app_dir}/usr/share/licenses/yandex-music/LICENSE"
mv "${TEMPDIR}/electron-${arch}/" "${app_dir}/usr/lib/yandex-music/electron"
echo "#!/bin/sh" > "${app_dir}/usr/bin/yandex-music"
echo 'exec /usr/lib/yandex-music/electron/electron /usr/lib/yandex-music/yandex-music.asar "$@"' >> "${app_dir}/usr/bin/yandex-music"
chmod 755 "${app_dir}/usr/bin/yandex-music"
cd "${app_dir}"
tar cvfz "${OUTPUT_DIR}/yandex-music_${version}_${arch}.tar.gz" *
cd "${INITIAL_DIR}"
}
INITIAL_DIR="${PWD}"
OUTPUT_DIR="${PWD}/tar"
x64=0
armv7l=0
arm64=0
#checking for arch option (if not specified set x64) and h option
while getopts :a:h name; do
case ${name} in
a)
case ${OPTARG} in
x64) x64=1 ;;
armv7l) armv7l=1 ;;
arm64) arm64=1 ;;
all)
x64=1
armv7l=1
arm64=1
;;
*)
echo "Invalid architecture specified"
usage
exit 1
;;
esac
;;
h)
usage
exit 0
;;
*)
usage
exit 1
;;
esac
done
#checking if at least one arch is specified else set x64
if [ ${x64} -eq 0 ] && [ ${armv7l} -eq 0 ] && [ ${arm64} -eq 0 ]; then
x64=1
fi
clear() {
rm -rf "${TEMPDIR}"
}
TEMPDIR="$(mktemp -d)"
trap clear EXIT
#loading version info with jq
version=$(jq -r '.ym.version' ./utility/version_info.json)
exe_name=$(jq -r '.ym.exe_name' ./utility/version_info.json)
exe_link=$(jq -r '.ym.exe_link' ./utility/version_info.json)
exe_sha256=$(jq -r '.ym.exe_sha256' ./utility/version_info.json)
#downloading exe
echo "Downloading ${exe_name}"
curl -L -o "${TEMPDIR}/${exe_name}" "${exe_link}"
#checking sha256
echo "Checking sha256"
echo "${exe_sha256} ${TEMPDIR}/${exe_name}" | sha256sum -c
echo "Repaking ${exe_name}"
bash repack.sh -o "${TEMPDIR}/app" "${TEMPDIR}/${exe_name}"
mkdir -p "${OUTPUT_DIR}"
if [ ${x64} -eq 1 ]; then
download_electron_binary "x64"
build_tarball "x64"
fi
if [ ${armv7l} -eq 1 ]; then
download_electron_binary "armv7l"
build_tarball "armv7l"
fi
if [ ${arm64} -eq 1 ]; then
download_electron_binary "arm64"
build_tarball "arm64"
fi

View File

@ -56,13 +56,13 @@
"ymExe": { "ymExe": {
"flake": false, "flake": false,
"locked": { "locked": {
"narHash": "sha256-a7D/8m6ECtYsep7mD9SqI8zFbWxFcjVJ4ELDWcxsWHA=", "narHash": "sha256-6YOx1r40nBcexbeqmQn5/FkuUaHxRrg4Qn1mEwPVnTs=",
"type": "file", "type": "file",
"url": "https://music-desktop-application.s3.yandex.net/stable/Yandex_Music_x64_5.0.12.exe" "url": "https://music-desktop-application.s3.yandex.net/stable/Yandex_Music_x64_5.0.14.exe"
}, },
"original": { "original": {
"type": "file", "type": "file",
"url": "https://music-desktop-application.s3.yandex.net/stable/Yandex_Music_x64_5.0.12.exe" "url": "https://music-desktop-application.s3.yandex.net/stable/Yandex_Music_x64_5.0.14.exe"
} }
} }
}, },

View File

@ -1,34 +1,41 @@
{ {
description = "Native Yandex Music desktop client"; description = "Native Yandex Music desktop client";
inputs = { inputs = {
ymExe.url = https://music-desktop-application.s3.yandex.net/stable/Yandex_Music_x64_5.0.12.exe; ymExe.url = https://music-desktop-application.s3.yandex.net/stable/Yandex_Music_x64_5.0.14.exe;
ymExe.flake = false; ymExe.flake = false;
}; };
outputs = { self, ymExe, nixpkgs, flake-utils }: outputs = { self, ymExe, nixpkgs, flake-utils }:
let let
yandex-music-with = pkgs: pkgs.callPackage ./nix { yandex-music-with = pkgs: pkgs.callPackage ./nix {
inherit ymExe; inherit ymExe;
}; };
in in
flake-utils.lib.eachDefaultSystem flake-utils.lib.eachDefaultSystem
(system: (system:
let let
pkgs = import nixpkgs { inherit system; }; pkgs = import nixpkgs { inherit system; };
in in
{ {
packages = rec { packages = rec {
yandex-music = yandex-music-with pkgs; yandex-music = yandex-music-with pkgs;
yandex-music-noflakes = pkgs.callPackage ./nix {}; yandex-music-noflakes = pkgs.callPackage ./nix {};
default = yandex-music; default = yandex-music;
}; };
} }
) // { ) // {
modules = [{ nixosModules = rec {
yandex-music = {
nixpkgs.overlays = [ nixpkgs.overlays = [
(final: prev: { (final: prev: {
yandex-music = yandex-music-with prev; yandex-music = yandex-music-with prev;
}) })
]; ];
}]; };
default = yandex-music;
}; };
nixosModule = self.nixosModules.default;
};
} }

BIN
icons/apple-touch-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
icons/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

4
icons/favicon.svg Normal file
View File

@ -0,0 +1,4 @@
<svg width="445" height="445" viewBox="0 0 442 445" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M220.86 445C342.838 445 441.72 345.383 441.72 222.5C441.72 99.6166 342.838 0 220.86 0C98.8825 0 0 99.6166 0 222.5C0 345.383 98.8825 445 220.86 445Z" fill="black"/>
<path d="M388.708 178.197L387.278 171.452L330.975 161.518L363.753 116.785L359.979 112.401L311.802 135.794L317.888 73.7995L312.958 70.8868L283.65 121.169L250.842 46.3281H245.06L252.881 118.533L170.161 51.571L163.192 53.6252L226.769 134.629L100.802 92.2262L94.9892 98.6648L207.595 163.572L52.3207 176.725L50.5859 186.383L211.947 204.197L77.2767 317.087L83.0895 324.967L243.295 236.666L211.673 392.235H221.26L282.767 245.741L320.232 360.348L326.897 355.075L311.528 238.72L369.839 305.681L373.613 299.519L328.936 216.491L391.326 239.885L391.904 232.864L335.905 191.044L388.708 178.197Z" fill="#FED42B"/>
</svg>

After

Width:  |  Height:  |  Size: 879 B

View File

@ -30,6 +30,7 @@ stdenvNoCC.mkDerivation
repack = ./../repack.sh; repack = ./../repack.sh;
patches = ./../patches; patches = ./../patches;
utility = ./../utility; utility = ./../utility;
icons = ./../icons;
desktopItem = ../templates/desktop; desktopItem = ../templates/desktop;
src = src =
if ymExe != null if ymExe != null
@ -44,6 +45,7 @@ stdenvNoCC.mkDerivation
cp -r $repack ./repack.sh cp -r $repack ./repack.sh
cp -r $patches ./patches cp -r $patches ./patches
cp -r $utility ./utility cp -r $utility ./utility
cp -r $icons ./icons
bash "./repack.sh" -o "./app" "$src" bash "./repack.sh" -o "./app" "$src"
''; '';
dontPatch = true; dontPatch = true;

View File

@ -9,4 +9,3 @@ diff --git a/package.json b/package.json
+ }, + },
+ "license": "UNLICENSED" + "license": "UNLICENSED"
} }
--

View File

@ -12,4 +12,3 @@ diff --git a/package.json b/package.json
+ "scalable": "build/next-desktop/favicon.svg" + "scalable": "build/next-desktop/favicon.svg"
+ } + }
} }
--

View File

@ -5,8 +5,8 @@ diff --git a/main/lib/createWindow.js b/main/lib/createWindow.js
x: 16, x: 16,
y: 10 y: 10
}, },
- minWidth: 1024, - minWidth: 768,
- minHeight: 800, - minHeight: 650,
width: 1280, width: 1280,
height: 800, height: 800,
webPreferences: { webPreferences: {

View File

@ -19,7 +19,7 @@ nopatch=0
while getopts :xo:ph name; do while getopts :xo:ph name; do
case $name in case $name in
x) extract_only=1 ;; x) extract_only=1 ;;
o) dst="$OPTARG" ;; o) dst="$(realpath "$OPTARG")" ;;
p) nopatch=1 ;; p) nopatch=1 ;;
h) h)
usage usage
@ -83,6 +83,10 @@ find "./" -type f -name "*.html" -print0 | while IFS= read -r -d $'\0' file; do
done done
echo "Title Fixed" echo "Title Fixed"
echo "Replacing Icons"
cp -drf "$SCRIPT_DIR/icons/." "./build/next-desktop/"
echo "Replaced Icons"
# applying patches # applying patches
# This function accepts patch file. If it names starts with `XXXX-optional`, # This function accepts patch file. If it names starts with `XXXX-optional`,

View File

@ -14,7 +14,7 @@ source=("%exe_link%" "git+https://github.com/cucumber-sp/yandex-music-linux")
sha256sums=("%exe_sha256%" "SKIP") sha256sums=("%exe_sha256%" "SKIP")
build() { build() {
sh "$srcdir/yandex-music-linux/repack.sh" "$srcdir/%exe_name%" bash "$srcdir/yandex-music-linux/repack.sh" "$srcdir/%exe_name%"
} }
package() { package() {

View File

@ -4,7 +4,7 @@ Name[ru]=Яндекс Музыка
Comment=Yandex Music — we collect music for you Comment=Yandex Music — we collect music for you
Comment[ru]=Яндекс Музыка — собираем музыку для вас Comment[ru]=Яндекс Музыка — собираем музыку для вас
GenericName=YandexMusic GenericName=YandexMusic
Exec=yandex-music %U Exec=yandex-music --no-sandbox %U
Icon=yandex-music Icon=yandex-music
Type=Application Type=Application
StartupNotify=true StartupNotify=true

33
templates/rpm.spec Normal file
View File

@ -0,0 +1,33 @@
Name: yandex-music
Version: %version%
Release: 1
Summary: Yandex Music Client
License: Custom
URL: https://github.com/cucumber-sp/yandex-music-linux
Source0: %source_tarball%
BuildArch: %arch%
Requires: (kde-cli-tools or kde-cli-tools5 or kde-runtime or trash-cli or glib2 or gvfs-client), (libXtst or libXtst6), (libnotify or libnotify4), (libxcb or libxcb1), (mesa-libgbm or libgbm1), (nss or mozilla-nss), at-spi2-core, gtk3, libdrm, xdg-utils
%description
Yandex Music - Personal recommendations, selections for any occasion and new music
%prep
%setup -q
%install
cp -r ./usr %{buildroot}/
chmod 755 %{buildroot}/usr/bin/yandex-music
%files
/usr/bin/yandex-music
/usr/lib/yandex-music
/usr/share/applications/yandex-music.desktop
/usr/share/icons/hicolor/48x48/apps/yandex-music.png
/usr/share/icons/hicolor/scalable/apps/yandex-music.svg
/usr/share/licenses/yandex-music
/usr/share/pixmaps/yandex-music.png

View File

@ -1,14 +1,14 @@
{ {
"ym": { "ym": {
"version": "5.0.12", "version": "5.0.14",
"exe_name": "Yandex_Music_x64_5.0.12.exe", "exe_name": "Yandex_Music_x64_5.0.14.exe",
"exe_link": "https://music-desktop-application.s3.yandex.net/stable/Yandex_Music_x64_5.0.12.exe", "exe_link": "https://music-desktop-application.s3.yandex.net/stable/Yandex_Music_x64_5.0.14.exe",
"exe_sha256": "4ebeac9620f60e9e2333114cf8c8fb3dc6f2c2c70da58ba56902aa75d65ce4f8" "exe_sha256": "c10c6c4b5d596f9bf490a231d7c13bbd2627109f71c9c57aa4e2b034e31252f4"
}, },
"electron": { "electron": {
"version": "27.3.3", "version": "27.3.5",
"x64": "https://github.com/electron/electron/releases/download/v27.3.3/electron-v27.3.3-linux-x64.zip", "x64": "https://github.com/electron/electron/releases/download/v27.3.5/electron-v27.3.5-linux-x64.zip",
"armv7l": "https://github.com/electron/electron/releases/download/v27.3.3/electron-v27.3.3-linux-armv7l.zip", "armv7l": "https://github.com/electron/electron/releases/download/v27.3.5/electron-v27.3.5-linux-armv7l.zip",
"arm64": "https://github.com/electron/electron/releases/download/v27.3.3/electron-v27.3.3-linux-arm64.zip" "arm64": "https://github.com/electron/electron/releases/download/v27.3.5/electron-v27.3.5-linux-arm64.zip"
} }
} }