2.home-manager/modules/programs/pianobar.nix
luo jiyin 7d06e0cefe
Some checks failed
/ triage (push) Has been cancelled
GitHub Pages / publish (ubuntu-latest) (push) Has been cancelled
treewide: fix spelling errors
2026-03-11 22:32:16 -05:00

101 lines
2.3 KiB
Nix

{
config,
lib,
pkgs,
...
}:
let
inherit (lib)
mkEnableOption
mkIf
mkOption
mkPackageOption
literalExpression
;
inherit (lib.types)
nonEmptyStr
submodule
;
inherit (pkgs.formats)
keyValue
;
keyValueFormat = keyValue { };
cfg = config.programs.pianobar;
in
{
meta.maintainers = [
# lib.maintainers.S0AndS0
## TODO: Trade above for below when `node.nixpkgs.locked.rev` is at or beyond
## 4d48a4e93b9ffbd291b2d9ca3315848e27eed800
{
name = "S0AndS0";
email = "S0AndS0@digital-mercenaries.com";
github = "S0AndS0";
githubId = 4116150;
matrix = "@s0ands0:matrix.org";
}
];
options.programs.pianobar = {
enable = mkEnableOption "Enable pianobar";
package = mkPackageOption pkgs "pianobar" {
nullable = true;
};
settings = mkOption {
type = submodule {
freeformType = keyValueFormat.type;
options = {
user = mkOption {
description = "Username or email address for Pandora music service authentication";
example = ''"groovy-tunes@example.com"'';
type = nonEmptyStr;
};
password_command = mkOption {
description = "Command pianobar will use to access password for Pandora music service authentication";
example = ''"cat /run/secrets/pianobar/groovy-tunes"'';
type = nonEmptyStr;
};
};
};
default = { };
description = ''
Apply configurations for `pianobar` via key/value attributes.
Note; it is recommended to use `sops-nix`, or similar, secrets
management solution for providing
`programs.pianobar.settings.password_command` value.
'';
example = literalExpression ''
{
programs.pianobar = {
enable = true;
settings = {
user = "groovy-tunes@example.com";
password_command = "cat /run/secrets/pianobar/groovy-tunes";
};
};
}
'';
};
};
config = mkIf cfg.enable {
xdg.configFile."pianobar/config" = lib.mkIf (cfg.settings != { }) {
source = keyValueFormat.generate "pianobar-config" cfg.settings;
};
home.packages = mkIf (cfg.package != null) [
cfg.package
];
};
}