9f9e277b60
These (and the `*MD` functions apart from `literalMD`) are now no-ops in nixpkgs and serve no purpose other than to add additional noise and potentially mislead people into thinking unmarked DocBook documentation will still be accepted. Note that if backporting changes including documentation to 23.05, the `mdDoc` calls will need to be re-added. To reproduce this commit, run: $ NIX_PATH=nixpkgs=flake:nixpkgs/e7e69199f0372364a6106a1e735f68604f4c5a25 \ nix shell nixpkgs#coreutils \ -c find . -name '*.nix' \ -exec nix run -- github:emilazy/nix-doc-munge/98dadf1f77351c2ba5dcb709a2a171d655f15099 \ --strip {} + $ ./format
111 lines
3 KiB
Nix
111 lines
3 KiB
Nix
{ config, lib, pkgs, ... }:
|
||
|
||
with lib;
|
||
|
||
let
|
||
|
||
cfg = config.programs.beets;
|
||
|
||
yamlFormat = pkgs.formats.yaml { };
|
||
|
||
in {
|
||
meta.maintainers = with maintainers; [ rycee Scrumplex ];
|
||
|
||
options = {
|
||
programs.beets = {
|
||
enable = mkOption {
|
||
type = types.bool;
|
||
default = if versionAtLeast config.home.stateVersion "19.03" then
|
||
false
|
||
else
|
||
cfg.settings != { };
|
||
defaultText = "false";
|
||
description = ''
|
||
Whether to enable the beets music library manager. This
|
||
defaults to `false` for state
|
||
version ≥ 19.03. For earlier versions beets is enabled if
|
||
{option}`programs.beets.settings` is non-empty.
|
||
'';
|
||
};
|
||
|
||
package = mkOption {
|
||
type = types.package;
|
||
default = pkgs.beets;
|
||
defaultText = literalExpression "pkgs.beets";
|
||
example =
|
||
literalExpression "(pkgs.beets.override { enableCheck = true; })";
|
||
description = ''
|
||
The `beets` package to use.
|
||
Can be used to specify extensions.
|
||
'';
|
||
};
|
||
|
||
settings = mkOption {
|
||
type = yamlFormat.type;
|
||
default = { };
|
||
description = ''
|
||
Configuration written to
|
||
{file}`$XDG_CONFIG_HOME/beets/config.yaml`
|
||
'';
|
||
};
|
||
|
||
mpdIntegration = {
|
||
enableStats = mkEnableOption "mpdstats plugin and service";
|
||
|
||
enableUpdate = mkEnableOption "mpdupdate plugin";
|
||
|
||
host = mkOption {
|
||
type = types.str;
|
||
default = "localhost";
|
||
example = "10.0.0.42";
|
||
description = "The host that mpdstats will connect to.";
|
||
};
|
||
|
||
port = mkOption {
|
||
type = types.port;
|
||
default = config.services.mpd.network.port;
|
||
defaultText = literalExpression "config.services.mpd.network.port";
|
||
example = 6601;
|
||
description = "The port that mpdstats will connect to.";
|
||
};
|
||
};
|
||
};
|
||
};
|
||
|
||
config = mkMerge [
|
||
(mkIf cfg.enable {
|
||
home.packages = [ cfg.package ];
|
||
|
||
xdg.configFile."beets/config.yaml".source =
|
||
yamlFormat.generate "beets-config" cfg.settings;
|
||
})
|
||
|
||
(mkIf (cfg.mpdIntegration.enableStats || cfg.mpdIntegration.enableUpdate) {
|
||
programs.beets.settings.mpd = {
|
||
host = cfg.mpdIntegration.host;
|
||
port = cfg.mpdIntegration.port;
|
||
};
|
||
})
|
||
|
||
(mkIf cfg.mpdIntegration.enableStats {
|
||
programs.beets.settings.plugins = [ "mpdstats" ];
|
||
})
|
||
|
||
(mkIf cfg.mpdIntegration.enableUpdate {
|
||
programs.beets.settings.plugins = [ "mpdupdate" ];
|
||
})
|
||
|
||
(mkIf (cfg.enable && cfg.mpdIntegration.enableStats) {
|
||
systemd.user.services."beets-mpdstats" = {
|
||
Unit = {
|
||
Description = "Beets MPDStats daemon";
|
||
After = optional config.services.mpd.enable "mpd.service";
|
||
Requires = optional config.services.mpd.enable "mpd.service";
|
||
};
|
||
Service.ExecStart = "${cfg.package}/bin/beet mpdstats";
|
||
Install.WantedBy = [ "default.target" ];
|
||
};
|
||
})
|
||
];
|
||
}
|