Skip to content

Commit

Permalink
[nix] Fix configuration
Browse files Browse the repository at this point in the history
Reuse common shell for nix package. Add options for nix-way
configuration of yandex music.

Change-Id: I71a209a8ca8b5e3c5c08349b8da5ba91182a919e
  • Loading branch information
ein-shved committed May 22, 2024
1 parent e774ea6 commit d1984db
Show file tree
Hide file tree
Showing 7 changed files with 108 additions and 48 deletions.
23 changes: 10 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -244,27 +244,24 @@ nix-build --expr '(import <nixpkgs> {}).callPackage ./nix {}'
};
```
2. Import module in your `configuration.nix` or `home-manager.nix`
2. Import module in your `configuration.nix`:
```nix
imports = [
yandex-music.nixosModule
yandex-music.nixosModules.default
];
```
3. Add package `yandex-music`
For `configuration.nix`:
or in `home-manager.nix`:
```nix
environment.systemPackages = with pkgs; [
yandex-music
imports = [
yandex-music.homeManagerModules.default
];
```
For Home Manager:
3. Enable `yandex-music`
```nix
home.packages = with pkgs; [
yandex-music
];
programs.yandex-music.enable = true;
programs.yandex-music.tray.enable = true; # to enable tray support
```
5 changes: 3 additions & 2 deletions build_tarball.sh
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,15 @@ build_tarball(){
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 "./templates/default.conf" "${app_dir}/usr/lib/yandex-music/default.conf"
install -Dm644 "./LICENSE.md" "${app_dir}/usr/share/licenses/yandex-music/LICENSE"
mv "${TEMPDIR}/electron-${arch}/" "${app_dir}/usr/lib/yandex-music/electron"

install -Dm755 "./templates/yandex-music.sh" "${app_dir}/usr/bin/yandex-music"
sed -i "s|%electron_path%|/usr/lib/yandex-music/electron/electron|g" "${app_dir}/usr/bin/yandex-music"
sed -i "s|%asar_path%|/usr/lib/yandex-music/yandex-music.asar|g" "${app_dir}/usr/bin/yandex-music"

cd "${app_dir}"
tar -czf "${OUTPUT_DIR}/yandex-music_${version}_${arch}.tar.gz" *
Expand Down Expand Up @@ -128,4 +129,4 @@ fi
if [ ${arm64} -eq 1 ]; then
download_electron_binary "arm64"
build_tarball "arm64"
fi
fi
54 changes: 26 additions & 28 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -7,35 +7,33 @@
};

outputs = { self, ymExe, nixpkgs, flake-utils }:
let
yandex-music-with = pkgs: pkgs.callPackage ./nix {
inherit ymExe;
};
in
flake-utils.lib.eachDefaultSystem
(system:
let
pkgs = import nixpkgs { inherit system; };
in
{
packages = rec {
yandex-music = yandex-music-with pkgs;
yandex-music-noflakes = pkgs.callPackage ./nix {};
default = yandex-music;
let
yandex-music-with = pkgs: pkgs.callPackage ./nix {
inherit ymExe;
};
modules = isHm: rec {
yandex-music = {
imports = [ (import ./nix/module.nix { inherit isHm yandex-music-with; }) ];
};
}
) // {
nixosModules = rec {
yandex-music = {
nixpkgs.overlays = [
(final: prev: {
yandex-music = yandex-music-with prev;
})
];
default = yandex-music;
};
default = yandex-music;
};
in
flake-utils.lib.eachDefaultSystem
(system:
let
pkgs = import nixpkgs { inherit system; };
in
{
packages = rec {
yandex-music = yandex-music-with pkgs;
yandex-music-noflakes = pkgs.callPackage ./nix { };
default = yandex-music;
};
}
) // {
nixosModules = modules false;
homeManagerModules = modules true;

nixosModule = self.nixosModules.default;
};
nixosModule = self.nixosModules.default;
};
}
18 changes: 14 additions & 4 deletions nix/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
, electron

, ymExe ? null
, electronArguments ? ""
, trayEnabled ? false
}:
let
version_info = with builtins; fromJSON (readFile ../utility/version_info.json);
Expand All @@ -32,6 +34,7 @@ stdenvNoCC.mkDerivation
utility = ./../utility;
icons = ./../icons;
desktopItem = ../templates/desktop;
ymScript = ../templates/yandex-music.sh;
src =
if ymExe != null
then ymExe
Expand All @@ -54,10 +57,17 @@ stdenvNoCC.mkDerivation
mkdir -p "$out/share/nodejs"
mv app/yandex-music.asar "$out/share/nodejs"
# use makeWrapper on electron binary to make it call our asar package
makeWrapper "${electron}/bin/electron" "$out/bin/yandex-music" \
--add-flags "$out/share/nodejs/yandex-music.asar" \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--enable-features=UseOzonePlatform --ozone-platform=wayland}}"
CONFIG_FILE="$out/share/yandex-music.conf"
echo "TRAY_ENABLED=${if trayEnabled then "1" else "0"}" >> "$CONFIG_FILE"
echo "ELECTRON_ARGS=\"${electronArguments}\"" >> "$CONFIG_FILE"
install -Dm755 "$ymScript" "$out/bin/yandex-music"
sed -i "s|%electron_path%|${electron}/bin/electron|g" "$out/bin/yandex-music"
sed -i "s|%asar_path%|$out/share/nodejs/yandex-music.asar|g" "$out/bin/yandex-music"
wrapProgram "$out/bin/yandex-music" \
--set-default YANDEX_MUSIC_CONFIG "$CONFIG_FILE"
install -Dm644 "./app/favicon.png" "$out/share/pixmaps/yandex-music.png"
install -Dm644 "./app/favicon.png" "$out/share/icons/hicolor/48x48/apps/yandex-music.png"
Expand Down
53 changes: 53 additions & 0 deletions nix/module.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
{ yandex-music-with
, isHm ? false
}:
{ lib, pkgs, config, ... }:
let
cfg = config.programs.yandex-music;

in
{
imports = [{
nixpkgs.overlays = [
(final: prev: {
yandex-music = yandex-music-with prev;
})
];
}];

options = {
programs.yandex-music = {
enable = lib.mkEnableOption "yandex music application";
tray.enable = lib.mkEnableOption "tray icon for yandex music application";
electronArguments = lib.mkOption {
description = "Extra electron arguments";
example = "--no-sandbox --trace-warnings";
type = lib.types.str;
default = "";
};
package = lib.mkOption {
description = "Finalized package of yandex music application";
type = lib.types.package;
default = pkgs.yandex-music.override {
trayEnabled = cfg.tray.enable;
electronArguments = cfg.electronArguments;
};
};
};
};

config = lib.mkIf cfg.enable (
if isHm then
{
home.packages = [
cfg.package
];
}
else
{
environment.systemPackages = [
cfg.package
];
}
);
}
1 change: 1 addition & 0 deletions templates/PKGBUILD
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,5 @@ package() {

install -Dm755 "$srcdir/yandex-music-linux/templates/yandex-music.sh" "$pkgdir/usr/bin/yandex-music"
sed -i "s|%electron_path%|/usr/bin/electron29|g" "$pkgdir/usr/bin/yandex-music"
sed -i "s|%asar_path%|/usr/lib/yandex-music/yandex-music.asar|g" "$pkgdir/usr/bin/yandex-music"
}
2 changes: 1 addition & 1 deletion templates/yandex-music.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,4 @@ ELECTRON_BIN=${ELECTRON_CUSTOM_BIN:-%electron_path%}

export TRAY_ENABLED=${TRAY_ENABLED:-0}

exec "${ELECTRON_BIN}" "/usr/lib/yandex-music/yandex-music.asar" $ELECTRON_ARGS $WAYLAND_FLAGS
exec "${ELECTRON_BIN}" "%asar_path%" $ELECTRON_ARGS $WAYLAND_FLAGS

0 comments on commit d1984db

Please sign in to comment.