Merge pull request #126247 from kmein/feature/spotifyd

spotifyd: generate TOML config via formats

Lassulus 2e04b29a 3212ee39

Changed files
+26 -1
nixos
modules
services
audio
+26 -1
nixos/modules/services/audio/spotifyd.nix
···
let
cfg = config.services.spotifyd;
-
spotifydConf = pkgs.writeText "spotifyd.conf" cfg.config;
+
toml = pkgs.formats.toml {};
+
warnConfig =
+
if cfg.config != ""
+
then lib.trace "Using the stringly typed .config attribute is discouraged. Use the TOML typed .settings attribute instead."
+
else id;
+
spotifydConf =
+
if cfg.settings != {}
+
then toml.generate "spotify.conf" cfg.settings
+
else warnConfig (pkgs.writeText "spotifyd.conf" cfg.config);
in
{
options = {
···
default = "";
type = types.lines;
description = ''
+
(Deprecated) Configuration for Spotifyd. For syntax and directives, see
+
<link xlink:href="https://github.com/Spotifyd/spotifyd#Configuration"/>.
+
'';
+
};
+
+
settings = mkOption {
+
default = {};
+
type = toml.type;
+
example = { global.bitrate = 320; };
+
description = ''
Configuration for Spotifyd. For syntax and directives, see
<link xlink:href="https://github.com/Spotifyd/spotifyd#Configuration"/>.
'';
···
};
config = mkIf cfg.enable {
+
assertions = [
+
{
+
assertion = cfg.config == "" || cfg.settings == {};
+
message = "At most one of the .config attribute and the .settings attribute may be set";
+
}
+
];
+
systemd.services.spotifyd = {
wantedBy = [ "multi-user.target" ];
after = [ "network-online.target" "sound.target" ];