nixpkgs/pkgs/applications/audio/spotify/wrapper.nix
Rebecca Turner 4f03644c56 spotify: support --force-device-scale-factor
Add a Spotify wrapper with a `deviceScaleFactor` argument to set the
`--force-device-scale-factor` flag for high-DPI displays. If unset,
nothing is added.

This allows e.g.

   spotify.override { deviceScaleFactor = 1.66; }

Uses a separate wrapper derivation as suggested by @Ma27.
Uses `wrapProgram` instead of `makeWrapper` as suggested by @Ma27.
2020-09-21 13:50:19 -04:00

32 lines
803 B
Nix

{ symlinkJoin
, lib
, spotify-unwrapped
, makeWrapper
# High-DPI support: Spotify's --force-device-scale-factor argument; not added
# if `null`, otherwise, should be a number.
, deviceScaleFactor ? null
}:
symlinkJoin {
name = "spotify-${spotify-unwrapped.version}";
paths = [ spotify-unwrapped.out ];
nativeBuildInputs = [ makeWrapper ];
preferLocalBuild = true;
passthru.unwrapped = spotify-unwrapped;
postBuild = ''
wrapProgram $out/bin/spotify \
${lib.optionalString (deviceScaleFactor != null) ''
--add-flags ${lib.escapeShellArg "--force-device-scale-factor=${
builtins.toString deviceScaleFactor
}"}
''}
'';
meta = spotify-unwrapped.meta // {
priority = (spotify-unwrapped.meta.priority or 0) - 1;
};
}