mirror of
https://github.com/nix-community/home-manager.git
synced 2025-11-08 19:46:05 +01:00
Configuration entry similar to;
```nix
programs.pianobar = {
enable = true;
user = "groovy-tunes@example.com";
password_command = "cat /run/secrets/pianobar/groovy-tunes";
};
```
... will produce a `~/.config/pianobar/config` file with content of;
```conf
user = groovy-tunes@example.com
password_command = cat /run/secrets/pianobar/groovy-tunes
```
... and add `pianobar` to `home.packages` list.
All configurations that `man pianobar` documents _should_ available via
`extraOptions` attribute.
License, according to `NixOS/nixpkgs` is MIT, and that seems to match
what's shown on `PromyLOPh/pianobar` repo too;
- d92bfd5feb/pkgs/by-name/pi/pianobar/package.nix (L42o)
- https://github.com/PromyLOPh/pianobar/?tab=License-1-ov-file#readme
101 lines
2.3 KiB
Nix
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 emaill 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
|
|
];
|
|
};
|
|
}
|