1
0
Fork 0
mirror of https://github.com/LnL7/nix-darwin.git synced 2024-12-14 11:57:34 +00:00
nix-darwin/modules/services/spotifyd.nix
2021-03-11 04:20:00 +00:00

63 lines
1.5 KiB
Nix

{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.spotifyd;
format = pkgs.formats.toml { };
configFile = format.generate "spotifyd.conf" {
global = {
backend = "portaudio";
};
spotifyd = cfg.settings;
};
in
{
options = {
services.spotifyd = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Whether to enable the spotifyd service.
'';
};
package = mkOption {
type = types.path;
default = pkgs.spotifyd;
defaultText = "pkgs.spotifyd";
description = ''
The spotifyd package to use.
'';
};
settings = mkOption {
type = types.nullOr format.type;
default = null;
example = {
bitrate = 160;
volume_normalisation = true;
};
description = ''
Configuration for spotifyd, see <link xlink:href="https://spotifyd.github.io/spotifyd/config/File.html" />
for supported values.
'';
};
};
};
config = mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
launchd.user.agents.spotifyd = {
serviceConfig.ProgramArguments = [ "${cfg.package}/bin/spotifyd" "--no-daemon" ]
++ optionals (cfg.settings != null) [ "--config-path=${configFile}" ];
serviceConfig = {
KeepAlive = true;
RunAtLoad = true;
ThrottleInterval = 30;
};
};
};
}