{ 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"; tray.style = lib.mkOption { description = "Style of tray icon. 1 is default, 2 is mono black, 3 is mono white"; default = 1; type = lib.types.ints.between 1 3; }; tray.always = lib.mkEnableOption "leave in tray disregarding of play state"; devTools.enable = lib.mkEnableOption "development tools"; vibeAnimationMaxFps = lib.mkOption { description = '' Vibe animation FPS from 0 (black screen) to to any reasonable number. Recommended `25` - `144` ''; default = 25; type = lib.types.ints.unsigned; }; customTitleBar.enable = lib.mkEnableOption '' Yandex Music's custom Windows-styled titlebar ''; 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; trayStyle = cfg.tray.style; trayAlways = cfg.tray.always; devTools = cfg.devTools.enable; customTitleBar = cfg.customTitleBar.enable; inherit (cfg) electronArguments vibeAnimationMaxFps; }; }; }; }; config = lib.mkIf cfg.enable ( if isHm then { home.packages = [ cfg.package ]; } else { environment.systemPackages = [ cfg.package ]; } ); }